Является ли создание общего списка игнорируемым, если экземпляр уже существует?
У меня есть этот код:
if (null == _priceComplianceSummaryList)
{
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
}
Resharper помечает это как проблему, предлагая "Заменить" если "на соответствующую ветку". Если я согласен, приведенный выше код изменится на:
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
Тем не менее, кажется, что R# чаще всего относится к типу "кошка с поясом и подтяжками", убеждая меня всегда проверять, является ли что-то нулевым, прежде чем ссылаться на него. Так действительно ли это якобы безрассудное поведение с его стороны является вопросом эффективности? IOW, генерирует ли "новый список<>" новый список, только если переменная istance (_priceComplianceSummaryList) равна нулю, без необходимости явно проверять это?
1 ответ
Предложение "Заменить" если "соответствующей ветвью" Предложение R# означает, что нет сценариев, когда ваше булево выражение возвращает false
, Например,
void SomeMethod(bool firstParam)
{
var secondParam = true;
if (firstParam || secondParam)
{
Console.WriteLine();
}
}
Этот код будет рефакторинг R#, потому что firstParam || secondParam
всегда верно.
Тогда ваши 2 примера кода не всегда эквивалентны, но в вашем сценарии они есть.