c# - "Use of unassigned local variable"错误的原因是什么?

标签 c# .net boolean default default-value

<分区>

使用这段代码:

bool dataToAdd;
if (null == _priceComplianceDetailList) return dataToAdd;

我遇到编译器错误,“使用未分配的局部变量‘dataToAdd’

所以我必须明确地将“false”分配给 boolean 值:

bool dataToAdd = false;
if (null == _priceComplianceDetailList) return dataToAdd;

在上下文中:

private bool PopulateSheetWithDetailData()
{
    bool dataToAdd = false;
    if (null == _priceComplianceDetailList) return dataToAdd;
    List<PriceComplianceDetail> _sortedDetailList =
    . . .
    return _sortedDetailList.Count > 0;
}

为什么有必要? boolean 值不是有默认值 false 吗?

最佳答案

因为默认情况下不会初始化局部变量。您应该明确地初始化它们。这是一个编译器功能,可以避免将来出错。语言规范中对此进行了澄清 herehere .

The reason this is illegal in C# is because using an unassigned local has high likelihood of being a bug

如果您想知道做出此决定的原因,请参阅 here .

关于c# - "Use of unassigned local variable"错误的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361527/

相关文章:

c# - 使用 DataRowExtension 解析 TimeSpan

c# - 如何替换 C# 字符串中的特定字符?

c# - 如何使用 HttpWebRequest 使 HTTP 请求通过匿名 NTLM 进行身份验证

java - 如何将文本输入与多个字符串进行比较?

c# - 使用 Razor 的条件 Html 属性

c# - 了解 ASP .NET (WebForms) 中的错误处理

c# - 使用 iTextSharp 设置单元格对齐方式和(备用)背景行颜色

c# - 二进制列表的 LINQ 三元结果

c++ - 替代 vector <bool>

c# - 如何编写在 TIN 末尾带有可选字符 * 的正则表达式?