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