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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


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?

Автор вопроса: Qwertiy

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

Источник

Вам также может быть интересно:

Реализация промежуточного менеджера между ядром и пользовательским приложением — c++ многопоточность шаблоны-проектирования
Вопрос: Есть некоторая многоагентная система, которая имеет ядро, агентную сеть, сервисы и проч. Она загружается и управляется посредством менеджера, назовем его System_Manager. Также через него ...
Как скрыть строки с текстом в исполняемых файлах PE (.exe)? — c++ c windows
Вопрос: При создании .ехе файла туда помещаются все строковые литералы, используемые в программе. Эти данные лежат в открытом виде и получить их даже штатными средствами ...
объявление структуры в php аналогичное js структур — php javascript массивы
Вопрос: Приветствую Подскажите пожалуйста как в php сформировать структуру, аналогичную JS. Например: JS: var data = { object1: 15, object2: { ...
Удаление проекта на Gitlab — gitlab
Вопрос: Удалила проект на Gitlab через Settings -> Advanced Settings. Но он остался в списке проектов и не даёт сделать повторный Fork проекта, который содержался ...
Удаление изображения из массива формы — javascript jquery form
Вопрос: Есть код, который выводит изображения, которые были добавлены в <input> и там есть кнопка удаления изображения, но у меня никак не получается удалить их ...
Картинка увеличивается и уменьшается — html css google-chrome
Вопрос: Как сделать так чтобы картинка не увеличивалась и не уменьшалась когда прибавляешь проценты в браузере. Если увеличивать в браузере или уменьшать страницу чтобы изображение ...
Алгоритмы. Стенка из блоков — алгоритм математика
Вопрос: Имеется неограниченое поле MxN. На нём расположены блоки прямоугольной формы 1х1, 1х2, 1х3, 2х2 и т.д. до 8х8. Количество ограничено. Блоки могут располагаться как ...
Ковариантность через инвариантный параметр — c#
Вопрос: Есть конструкция вот такого вида class TypeBase { } class TypeConcrete : TypeBase { } interface IGeneric<T> { } class Generic<T> : IGeneric<T> where T: TypeBase { } И ...
Как в Ubuntu управлять кулером? — linux ubuntu
Вопрос: Вопрос в следующем, стоит Ubuntu как 2-я система. Скажите, есть ли утилита или в терминале функция через которую можно управлять кулером на ЦП? Fancontrol ...
Как сделать что бы после точки и по нажатию на enter в EditText / multiline слово писалось с большой буквы? — java android android-studio
Вопрос: Как я могу сделать, чтобы после точки и по нажатию на Enter (т.е перевод на новую строку), в EditText (multiline) слово писалось с большой ...
Раскодировать UCS2 — javascript кодировка перекодировка
Вопрос: Вот это текст в UCS2: 004F0043005400410054004F004B002000380033002E0032003700200070002E0020003700200434043D043504390020043C04430437044B043A0438002E0020041104350437043B0438043C04380442043D043E002004380020043104350441043F043B04300442043D043E003A0020002A0036003200360023 Через онлайн конвертер все работает и текст переводится в нормальную кириллицу.Ссылка тут. Как мне в JS ...
Здравствуйте Можете ли вы проверить если я ответил правильно на задачу из книги по c++ — c++ c++14
Вопрос: код: #include <iostream> #include <string> using namespace std; int main() { ...
Права юзера над другим юзером в django — python python-3.x django
Вопрос: Как сделать чтоб тип юзеров или группа ( допустим учитель) мог изменять информацию про студента ( стандартного юзера) но только одно поле (avg_mark). И как ...
Помогите пожалуйста с вёрсткой навигационной панели слайдера — javascript html css
Вопрос: Использую slick slider. При выборе слайда или просто прокрутке в секции миниатюр, почему то забрасывает блок с слайдами очень далеко, не могу понять почему, ...
Раздача данных своим рабочим процессам — delphi многопоточность
Вопрос: Есть служба, которая запускает несколько процессов, которым она будет передавать данные (объекты размером около 10кб). Обратно передавать ничего не надо. Для этого есть несколько ...

Оставьте ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *