0

我有这个代码:

if (null == _priceComplianceSummaryList)
{
    _priceComplianceSummaryList = new List<PriceComplianceSummary>();
}

Resharper 将其标记为问题,建议“用相应的分支替换 'if' 语句”如果我默认,上面的代码将更改为:

_priceComplianceSummaryList = new List<PriceComplianceSummary>();

然而,似乎 R# 通常更像是“猫”的腰带和吊带类型,敦促我在引用它之前总是检查某些东西是否为空。那么,这种表面上鲁莽的行为真的只是效率问题吗?IOW,“new List<>”是否仅在 istance 变量 (_priceComplianceSummaryList) 为空时才生成新列表,而无需明确检查?

4

1 回答 1

2

“用相应的分支替换 'if' 语句”R# 建议意味着当您的布尔表达式返回时没有场景false。例如,

void SomeMethod(bool firstParam)
{
    var secondParam = true;
    if (firstParam || secondParam)
    {
        Console.WriteLine();
    }
}

此代码将由 R# 重构,因为firstParam || secondParam它始终为真。

然后,您的 2 个代码示例并不总是等价的,但在您的场景中它们是等价的。

于 2016-03-25T23:15:34.597 回答