我的代码如下
int tmpCnt;
if (name == "Dude")
tmpCnt++;
为什么会有错误"Use of unassigned local variable tmpCnt"?
我知道我没有显式地初始化它,但是由于100,一个值类型被初始化为0
.参考资料还提醒我:
记住,不允许在C#中使用未初始化的变量.
但是,如果默认情况下已经完成了,为什么还要显式地执行呢?如果我不必这么做,它不会获得性能吗?
我的代码如下
int tmpCnt;
if (name == "Dude")
tmpCnt++;
为什么会有错误"Use of unassigned local variable tmpCnt"?
我知道我没有显式地初始化它,但是由于100,一个值类型被初始化为0
.参考资料还提醒我:
记住,不允许在C#中使用未初始化的变量.
但是,如果默认情况下已经完成了,为什么还要显式地执行呢?如果我不必这么做,它不会获得性能吗?
局部变量没有初始化.你必须手动初始化它们.
Members已初始化,例如:
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++;
因此,无论是长还是短,成员都是初始化的,而局部变量则不是.这就是为什么会出现编译器错误.