如果实例已经存在,是否忽略通用列表构造?
Is generic list construction ignored if the instance already exists?
我有这个代码:
if (null == _priceComplianceSummaryList)
{
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
}
Resharper 将其标记为问题,建议,"Replace 'if' statement with respective branch" 如果我默许,上面的代码将更改为:
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
然而,R# 似乎更像是 "cat," 的腰带和吊带类型,敦促我在引用它之前始终检查它是否为 null。那么,这种表面上鲁莽的行为真的只是效率问题吗? IOW,如果 istance 变量 (_priceComplianceSummaryList) 为空,"new List<>" 是否只生成一个新列表,而不必显式检查?
"Replace 'if' statement with respective branch" R# 建议意味着当你的布尔表达式 returns false
时没有场景。例如,
void SomeMethod(bool firstParam)
{
var secondParam = true;
if (firstParam || secondParam)
{
Console.WriteLine();
}
}
此代码将由 R# 重构,因为 firstParam || secondParam
始终为真。
那么,您的 2 个代码示例并不总是等同的,但在您的场景中它们是等同的。
我有这个代码:
if (null == _priceComplianceSummaryList)
{
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
}
Resharper 将其标记为问题,建议,"Replace 'if' statement with respective branch" 如果我默许,上面的代码将更改为:
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
然而,R# 似乎更像是 "cat," 的腰带和吊带类型,敦促我在引用它之前始终检查它是否为 null。那么,这种表面上鲁莽的行为真的只是效率问题吗? IOW,如果 istance 变量 (_priceComplianceSummaryList) 为空,"new List<>" 是否只生成一个新列表,而不必显式检查?
"Replace 'if' statement with respective branch" R# 建议意味着当你的布尔表达式 returns false
时没有场景。例如,
void SomeMethod(bool firstParam)
{
var secondParam = true;
if (firstParam || secondParam)
{
Console.WriteLine();
}
}
此代码将由 R# 重构,因为 firstParam || secondParam
始终为真。
那么,您的 2 个代码示例并不总是等同的,但在您的场景中它们是等同的。