C# ';使用未分配的局部变量';foreach循环内部错误,返回收益率
下面的方法编译好C# ';使用未分配的局部变量';foreach循环内部错误,返回收益率,c#,yield-return,C#,Yield Return,下面的方法编译好 string DoSomething(int x) { string s; if(x < 0) s = "-"; else if(x > 0) s = "+"; else return "0"; return DoAnotherThing(s); } 对我来说,s显然是在代码到达该行时分配的。这个错误的原因可能是什么?可能是编译器错误吗 如果x等于零,则从不分配s。因此,您正
string DoSomething(int x) {
string s;
if(x < 0)
s = "-";
else if(x > 0)
s = "+";
else
return "0";
return DoAnotherThing(s);
}
对我来说,
s
显然是在代码到达该行时分配的。这个错误的原因可能是什么?可能是编译器错误吗 如果x
等于零,则从不分配s
。因此,您正在将一个未赋值变量传递给DoAnotherThing()
您可能希望else子句中的
产生中断
。请记住,yield return
的返回方式与正常函数不同。它返回一项,但允许您继续迭代<代码>产生中断停止迭代。这不是编译器错误。(实际上,这类错误很少,因此命中一个的机会很小。)这是代码中一个非常简单的错误
当x
的值为零时,代码进入else
块并产生“0”
。当请求下一个值时,该方法继续并执行此行:
yield return DoAnotherThing(s);
。。。此时您还没有为
s
赋值。谢谢!这是我不知道的。然后,返回“0”;继续代码>可以解决我的问题。但为了可读性,我会找到其他一些简洁的解决方案:)
yield return DoAnotherThing(s);