我的代码如下
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++;
因此,长和短都是这样,成员是初始化的,本地人不是。这就是为什么您会收到编译器错误的原因。