Является ли создание общего списка игнорируемым, если экземпляр уже существует?

У меня есть этот код:

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 примера кода не всегда эквивалентны, но в вашем сценарии они есть.

Другие вопросы по тегам