【问题标题】:"Use of unassigned local variable" error even though I assign the variable?即使我分配了变量,“使用未分配的局部变量”错误?
【发布时间】:2016-10-04 19:20:24
【问题描述】:

在下面的示例中,编译器生成错误“使用未分配的局部变量r”,即使我在使用之前在循环中分配了变量。为什么编译器会产生这个错误?

static void Main(string[] args)
{
    float r;

    for (int i = 0; i < 100; i++)
        r = i; // assigned here

    Console.WriteLine(r); // error: use of unassigned local variable            
}

【问题讨论】:

  • 我猜你需要这个float r = 0;
  • 编译器不会检查for 循环,因为有停止问题。 for 引入了一个条件,因此变量不被视为无条件赋值。

标签: c# compiler-errors


【解决方案1】:

只要编译器检测到未分配的变量可能,就会生成该错误。

因为for 循环的主体不能保证执行——例如,for(int i = 123; i &lt; 0; i++)——变量不能保证被赋值,所以编译器会产生错误。

来自documentation

C# 编译器不允许使用未初始化的变量。如果编译器检测到使用了可能尚未初始化的变量,则会生成编译器错误 CS0165。有关详细信息,请参阅Fields (C# Programming Guide)。请注意,当编译器遇到可能导致使用未分配变量的构造时会生成此错误,即使您的特定代码没有。这避免了为明确分配制定过于复杂的规则的必要性。

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多