我的代码如下

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

因此,无论是长还是短,成员都是初始化的,而局部变量则不是.这就是为什么会出现编译器错误.

.net相关问答推荐

使用PowerShell在Windows容器内安装exe

.NET发布的应用程序运行与开发不同的端口

无法实例化类的代理:System.Net.HttpWebRequest.找不到无参数构造函数

"投掷;" 是什么意思?靠自己做什么?

无法解析此引用.找不到程序集

C# - 获取不包括隐藏文件的文件列表

为什么 .Contains 慢?通过主键获取多个实体的最有效方法?

序列化私有成员数据

如何使用 NUnit(或可能使用另一个框架)测试异步方法?

如何遍历字典并更改值?

.NET 事件 - 什么是对象发送者和 EventArgs e?

如何在多个解决方案之间共享相同的 Resharper 设置,无需人工干预?

.NET Framework SDK 和 Targeting 包有什么区别

在关闭警告中访问 foreach 变量

将两个列表映射到 C# 中的字典中

如何使用 EPPlus 设置 XLSX 单元格宽度?

嵌套的 Try/Catch 块是个坏主意吗?

如何访问 Session 变量并在 javascript 中设置它们?

当它被抛出和捕获时,不要在那个异常处停止调试器

SqlParameter 已被另一个 SqlParameterCollection 包含 - using() {} 作弊吗?