"使用未分配的局部变量"错误的原因是什么?

B. *_*non 6 .net c# boolean default default-value

使用此代码:

bool dataToAdd;
if (null == _priceComplianceDetailList) return dataToAdd;
Run Code Online (Sandbox Code Playgroud)

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

所以我不得不明确地给布尔分配"假":

bool dataToAdd = false;
if (null == _priceComplianceDetailList) return dataToAdd;
Run Code Online (Sandbox Code Playgroud)

在上下文中:

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

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

Ham*_*jam 11

因为默认情况下未初始化局部变量.您应该明确初始化它们.它是一种编译器功能,可以避免将来出现错误.这里这里的语言规范都澄清了一点.

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

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