【问题标题】:What is the reason for "Use of unassigned local variable" error? [duplicate]“使用未分配的局部变量”错误的原因是什么? [复制]
【发布时间】:2016-03-25 12:16:36
【问题描述】:

使用此代码:

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

我收到一个编译器错误,“使用未分配的局部变量 'dataToAdd'

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

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

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

【问题讨论】:

  • 默认只适用于类成员,方法中的局部变量必须显式赋值。
  • 您也可以完全删除变量,因为您是根据列表的计数返回的,并且在第一个 if 块中您可以直接返回 false。

标签: c# .net boolean default default-value


【解决方案1】:

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

这是在 C# 中非法的原因是因为使用未分配的本地 很有可能是一个错误

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

【讨论】:

  • 同样相关的是section 5.1.7。具体来说:“由 local-variable-declaration 引入的局部变量不会自动初始化,因此没有默认值。”
  • 添加到答案中,谢谢@JoeFarrell,
猜你喜欢
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多