Использование метода Enumerable.Contains для проверки пустых элементов - PullRequest
0 голосов
/ 26 февраля 2020

Предположим, у меня есть очень простой IEnumerable, который выглядит следующим образом:

IEnumerable<string> foo = new[] { "Apple", null, "Orange" };

Я хотел бы проверить, содержит ли он элемент null. Исходя из того, что я нашел в Google, я могу сделать это следующим образом:

bool containsNull = foo.Any(item => item == null);

А как насчет метода Enumerable.Contains? Мне кажется очевидным следующее, но я никогда не видел это таким образом:

bool containsNull = foo.Contains(null);

Есть ли какие-либо проблемы с предыдущим выражением, в результате которых вместо него используется метод Enumerable.Any?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Это правда, в большинстве случаев Contains(null) сделает работу. Но есть уязвимость для ArgumentNullException. Примером может быть:

string foo = "foo";
bool containsNull = foo.Contains(null); //throws exception

В вашем случае вы уже установили тип generi c как string, так что использовать Contains.

безопасно.
0 голосов
/ 26 февраля 2020

Оператор «Содержит» проверяет, существует ли указанный элемент в коллекции или нет, и возвращает логическое значение.

«Любой» проверяет, удовлетворяет ли какой-либо элемент заданному условию или нет? В следующем примере любая операция используется для проверки того, является ли ученик подростком или нет.

В этом случае лучше использовать «ЛЮБОЙ»

йо, чтобы посетить https://www.tutorialsteacher.com/linq/linq-quantifier-operators

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