一尘不染

为什么要编译错误“使用未分配的局部变量”?

c#

我的代码如下

int tmpCnt;  
if (name == "Dude")  
   tmpCnt++;

为什么会出现错误Use of unassigned local variable tmpCnt?我知道我没有明确初始化它,但是由于默认值表0无论如何都使用了一个值类型。该参考还提醒我:

请记住,不允许在C#中使用未初始化的变量。

但是,如果默认情况下已经完成,为什么还要显式地执行呢?如果我不必这样做,它不会获得性能吗?就是想…


阅读 281

收藏
2020-05-19

共1个答案

一尘不染

局部变量未初始化。您必须手动初始化它们。

成员 被初始化,例如:

public class X
{
    private int _tmpCnt; // This WILL initialize to zero
    ...
}

但是局部变量不是:

public static void SomeMethod()
{
    int tmpCnt;  // This is not initialized and must be assigned before used.

    ...
}

因此,您的代码必须是:

int tmpCnt = 0;  
if (name == "Dude")  
   tmpCnt++;

因此,长和短都是这样,成员是初始化的,本地人不是。这就是为什么您会收到编译器错误。

2020-05-19