gpt4 book ai didi

c# - 带有 yield 返回的 foreach 循环内的“使用未分配的局部变量”错误

转载 作者:行者123 更新时间:2023-11-30 19:16:37 25 4
gpt4 key购买 nike

下面的方法可以正常编译。

string DoSomething(int x) {
string s;
if(x < 0)
s = "-";
else if(x > 0)
s = "+";
else
return "0";

return DoAnotherThing(s);
}

但是当我在 foreach 循环中编写相同的代码并使用 yield return 而不是 return 我得到 Use of unassigned local变量“s” 编译错误。

// Causes compile error
IEnumerable<string> DoSomethingWithList(IEnumerable<int> xList) {
foreach(var x in xList) {
string s;

if(x < 0)
s = "-";
else if(x > 0)
s = "+";
else
yield return "0";

// COMPILE ERROR: Use of unassigned local variable 's'
yield return DoAnotherThing(s);
}
}

对我来说,很明显 s 是在代码到达该行时分配的。这个错误的原因可能是什么,可能是编译器错误?

最佳答案

这不是编译器错误。 (真的,周围很少有这样的人,所以击中一个的机会很小。)这是您代码中的一个非常简单的错误。

x 的值为零时,您的代码进入 else block 并产生 "0"。当请求下一个值时,该方法继续并执行此行:

yield return DoAnotherThing(s);

...此时您还没有为 s 分配任何值。

关于c# - 带有 yield 返回的 foreach 循环内的“使用未分配的局部变量”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com