很明显,我似乎错过了一些非常有名且常见的东西,但我无法理解为什么空的.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调用数组的实际用例?
答案 0 :(得分:2)
创建数组时,所有元素都使用默认值进行初始化。
因此,int[] arr = new int[2]
实际上等于int[] arr = new int[2] { 0, 0 }
。这就是.Any()
返回true
的原因。
答案 1 :(得分:0)
根据您的代码示例,初始化数组上的Any()方法没有有意义的用例。
但是,正如我在你的问题的评论中提到的,如果你正在调用一个返回数组的方法,那么你可以对返回的数组执行Any()检查,以确定它是否有任何元素。 / p>