Проверка на null перед GetValueOrDefault

161
06 марта 2018, 01:24

Linq, метод Sum для nullable-типов:

public static int? Sum(this IEnumerable<int?> source) {
    if (source == null) throw Error.ArgumentNull("source");
    int sum = 0;
    checked {
        foreach (int? v in source) {
            if (v != null) sum += v.GetValueOrDefault();
        }
    }
    return sum;
}

В чём смысл конструкции

if (v != null) sum += v.GetValueOrDefault();

насколько я понимаю, можно было бы без изменения результата написать просто

sum += v.GetValueOrDefault();

Так зачем же if?

Answer 1

С точки зрения именно результирующего значения действительно ничего не изменится, однако чем больше null-значений в представленном source, тем указанный метод будет работать быстрее.

READ ALSO
Цветовая модель HSV(HSB). Перевод из RGB

Цветовая модель HSV(HSB). Перевод из RGB

Недавно сталкнулся с задачей, в одном элементе которой требовалось преобразование

150
Каковы преимущества/недостатки Nemerle по сравнению с С#? [требует правки]

Каковы преимущества/недостатки Nemerle по сравнению с С#? [требует правки]

Здравствуйте! Большую часть времени я пишу на С#, но мне всегда не хватало в этом прекрасном языке макросов (однажды попробовав макросы LISP, трудно...

151
ChannelFactory очистка данных

ChannelFactory очистка данных

При передаче большого объема данных в WCF службу, передаваемое приложение начинает безмерно потреблять ОЗУ 240>364>478>797 Мб и тд

141