“使用未分配的局部变量”错误的原因是啥? [复制]
Posted
技术标签:
【中文标题】“使用未分配的局部变量”错误的原因是啥? [复制]【英文标题】: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。 【参考方案1】:因为默认情况下不初始化局部变量。您应该明确地初始化它们。这是一个编译器功能,可以避免将来出现错误。在语言规范here 和here 中对此进行了说明。
这是在 C# 中非法的原因是因为使用未分配的本地 很有可能是一个错误
如果您想知道此决定的原因,请参阅here。
【讨论】:
同样相关的是section 5.1.7。具体来说:“由 local-variable-declaration 引入的局部变量不会自动初始化,因此没有默认值。” 添加到答案中,谢谢@JoeFarrell,以上是关于“使用未分配的局部变量”错误的原因是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 (null || !TryParse) 条件会导致“使用未分配的局部变量”?