使用 Enumerable.Contains 方法进行空项检查
Using Enumerable.Contains method for null item checking
假设我有一个非常简单的 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
方法的先前表达式是否有任何问题?
的确如此,在大多数情况下 Contains(null)
都可以。但是 ArgumentNullException
存在漏洞。一个例子可以是:
string foo = "foo";
bool containsNull = foo.Contains(null); //throws exception
在您的情况下,您已经将通用类型设置为 string
,因此可以安全地使用 Contains
。
"Contains" 运算符检查指定元素是否存在于集合中并且 returns 一个布尔值。
"Any" 检查是否有任何元素满足给定条件?在下面的示例中,Any 操作用于检查任何学生是否是青少年。
在这种情况下最好使用 "ANY"
你可以参观https://www.tutorialsteacher.com/linq/linq-quantifier-operators
假设我有一个非常简单的 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
方法的先前表达式是否有任何问题?
的确如此,在大多数情况下 Contains(null)
都可以。但是 ArgumentNullException
存在漏洞。一个例子可以是:
string foo = "foo";
bool containsNull = foo.Contains(null); //throws exception
在您的情况下,您已经将通用类型设置为 string
,因此可以安全地使用 Contains
。
"Contains" 运算符检查指定元素是否存在于集合中并且 returns 一个布尔值。
"Any" 检查是否有任何元素满足给定条件?在下面的示例中,Any 操作用于检查任何学生是否是青少年。
在这种情况下最好使用 "ANY"
你可以参观https://www.tutorialsteacher.com/linq/linq-quantifier-operators