C # инициализировать список, поэтому не ноль, если не добавлено ни одного элемента - PullRequest
0 голосов
/ 09 мая 2018

У меня есть процедура, которая инициализирует список ...

var items = new List<TodoItem>();
//... load items from a REST service ...
return items;

Последующая процедура пытается перечислить список ...

foreach (var i in items)
{
    // ...
}

Если портал не возвращает никаких элементов, список составляет null, и попытка перечислить его не удалась ... причины уже обсуждались.

До сих пор я делал != null проверку перед перечислением. Сейчас я читаю SO сообщение, в котором кто-то говорит, что возвращать null в случае отсутствия элементов - «плохая практика».

Как мне инициализировать список как пустой список, который можно перечислить, вместо того, чтобы позволить ему быть null? единственный способ, который пришёл мне в голову, был такой, как

var items = new List<TodoItem>();
items =  Enumerable.Empty<TodoItem>()

Это не скомпилируется:

Невозможно неявно преобразовать тип System.Collections.Generic.IEnumerable 'в' System.Collections.Generic.List '. Существует явное преобразование (вам не хватает приведения?).

Попытка использовать явное приведение ...

items = (List<TodoItem>)Enumerable.Empty<TodoItem>();

завершается с ошибкой "недопустимое приведение"

Может ли кто-нибудь посоветовать, как правильно инициализировать мой список?

1 Ответ

0 голосов
/ 09 мая 2018
var items = new List<TodoItem>();

Создает пустой список. Готово.

Если вы делаете это, и в итоге получается null, то ваш код устанавливает его на null, и вы не показывали этот код. Может быть, это как-то связано с вашим "кодом загрузки службы REST" code?

...