我的代码如下

int tmpCnt;
if (name == "Dude")
   tmpCnt++;
为什么会出现错误“使用未分配的局部变量tmpCnt”?
我知道我没有显式初始化它,但是由于Default Value Table,无论如何都使用0初始化了一个值类型。该引用还提醒我:

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

最佳答案

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

成员被初始化,例如:

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++;

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

10-04 23:14