如果实例已存在,是否忽略通用列表构造?

时间:2016-03-25 23:07:26

标签: c# resharper generic-list branch-prediction object-construction

我有这段代码:

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

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

_priceComplianceSummaryList = new List<PriceComplianceSummary>();

然而,似乎R#通常更像是“猫”的腰带和吊带类型,促使我在引用它之前总是检查某些东西是否为空。那么这个表面上鲁莽的行为真的只是效率问题吗? IOW,做“新列表&lt;&gt;”如果istance变量(_priceComplianceSummaryList)为null,则只生成一个新列表,而不必显式检查?

1 个答案:

答案 0 :(得分:2)

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

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

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

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