数组上.Any()的真实用例是什么?

时间:2017-01-17 07:30:52

标签: linq

很明显,我似乎错过了一些非常有名且常见的东西,但我无法理解为什么空的.An()调用数组和列表的结果不同。

据我所知,当我打电话时.Any()它在语义上等于询问:“这个盒子是否包含任何物品?”。所以当我写这样的东西时:

List<int> list= new List<int>();

WriteLine(list.Any());//returns false



list.Add(1);

WriteLine(list.Any());//returns true

预计在第一种情况下会返回false,因为list是空的,并且在添加项目时为true。

但是,如果我将尝试使用数组,这个数组将被初始化但是空(没有任何项目)。 Any()调用将返回true:

int[] arr = new int[2];

WriteLine(arr.Any());//returns true despite in has no items

那么在数组上调用空的.Any()是什么意思,如果它总是返回true,则检查它是否有任何项目?我是否应该避免使用.Any()用于此类目的?

什么是空的.Any调用数组的实际用例?

2 个答案:

答案 0 :(得分:2)

创建数组时,所有元素都使用默认值进行初始化。 因此,int[] arr = new int[2]实际上等于int[] arr = new int[2] { 0, 0 }。这就是.Any()返回true的原因。

答案 1 :(得分:0)

根据您的代码示例,初始化数组上的Any()方法没有有意义的用例。

但是,正如我在你的问题的评论中提到的,如果你正在调用一个返回数组的方法,那么你可以对返回的数组执行Any()检查,以确定它是否有任何元素。 / p>