C# 使用了未赋值的局部变量 ,其实是赋值的

循环中已经给TAC 赋值,但是return 后面的TAC 报错说为赋值求指教。

图片说明

其实楼上说的并不完全正确,准确的说不是if的原因,应该是foreach作用域的原因,可以把if去掉测试一下。
根本原因是c#编译器判断变量是否赋值是在当前作用域或者是父作用域,而不能判断子作用域

定义的时候这样定义: string tac = string.Empty 或者 string tac = null; 编译器报错是因为你赋值是写在循环里面,万一这个if永远进不去那tac就永远不会被赋值

if循环不执行,就没有赋初值,需要先赋初值