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

其实楼上说的并不完全正确,准确的说不是if的原因,应该是foreach作用域的原因,可以把if去掉测试一下。
根本原因是c#编译器判断变量是否赋值是在当前作用域或者是父作用域,而不能判断子作用域
定义的时候这样定义: string tac = string.Empty 或者 string tac = null; 编译器报错是因为你赋值是写在循环里面,万一这个if永远进不去那tac就永远不会被赋值
if循环不执行,就没有赋初值,需要先赋初值