我有这段代码:
if (null == _priceComplianceSummaryList)
{
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
}
Resharper将其标记为一个问题,建议“替换'if'语句与相应的分支”如果我默认,上面的代码更改为:
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
然而,似乎R#通常更像是“猫”的腰带和吊带类型,促使我在引用它之前总是检查某些东西是否为空。那么这个表面上鲁莽的行为真的只是效率问题吗? IOW,做“新列表&lt;&gt;”如果istance变量(_priceComplianceSummaryList)为null,则只生成一个新列表,而不必显式检查?
答案 0 :(得分:2)
“替换'if'语句与相应的分支”R#建议意味着当布尔表达式返回false
时没有任何情况。例如,
void SomeMethod(bool firstParam)
{
var secondParam = true;
if (firstParam || secondParam)
{
Console.WriteLine();
}
}
此代码将由R#重构,因为firstParam || secondParam
始终为真。
然后,您的2个代码示例并不总是等效的,但在您的场景中它们是。