Что лучше, когда проверка списка имеет значение null: не null или использовать Any - PullRequest
0 голосов
/ 05 октября 2018

Что лучше, когда контрольный список равен нулю?

var newList;

if(newList!= null)

or newList.Any()

В приведенном выше коде иногда я проверяю не ноль, а иногда я использую Any (), я не знаю, какой из них лучшепочему?

Любой совет?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Это не одно и то же.

Any вызовет исключение, если используется для ссылки null.

Со списками вы можете думать о .Any() как .Count() != 0 (*)

Возможно, вам придется проверить оба, и вы должны сделать нулевую проверку перед вызовом Any() на вашем IEnumerable.

Один из способов - проверить их на наличие одного удара с помощью нулевой безопасной навигации ?., как в Ответ Тьерри V .

Но иногда вы хотите броситьпользовательское исключение, если у вас есть нулевое значение, которое вы не должны иметь, и обрабатываете пустой список как правильный ввод, поэтому все зависит от контекста.

Просто помните, что они разные.

(*): как замечено в комментарии, .Any() фактически не реализовано как Count() == 0.Для списков это функционально эквивалентно, но лучше использовать Any(), чтобы проверить, является ли IEnumerable пустым или нет, потому что Count() может потребоваться пройти через все элементы.

0 голосов
/ 05 октября 2018

Поскольку другие ответы говорят, что != null и Any() различны

Я бы написал метод расширения, чтобы вы ожидали.

public static class ExtenstionArray
{
    public static bool CheckAny<T>(this IEnumerable<T> list) {
        return list != null && list.Any();
    }
}

, тогда вы можете использовать его проще для проверки.

if(newList.CheckAny())
0 голосов
/ 05 октября 2018

null и Any() имеют различное назначение.

Any используется для проверки вашего списка, если он содержит какой-либо элемент.

Перед вызовом Any ваш список должен быть не null, нет, он выдает исключение Null.

Подумайте о newList?.Any()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...