参见英文答案 >
count vs length vs size in a collection 9个
> .net array – difference between “Length”,“Count()” and “Rank” 6个
这可能是一个愚蠢的问题,为什么队列或列表没有Length属性,但只有Count?同样为什么数组有Length属性?
> .net array – difference between “Length”,“Count()” and “Rank” 6个
这可能是一个愚蠢的问题,为什么队列或列表没有Length属性,但只有Count?同样为什么数组有Length属性?
谢谢
解决方法
数组是固定的大小,它们总是通过预先定义大小来初始化.
.Length在这里有意义,因为它已修复,没有任何操作可以知道这一点(不计算在内)
另一方面,Versus .Count意味着大小是动态的,并且涉及(计数)操作以了解大小
Why there is no
.Length
property for aCollection
orList
?
这确实是一个很好的问题,答案的一部分是上面的不同,但它也受到框架设计本身的影响
在框架设计中,Collection是Enumerable,任何Enumerable都有一个Enumerator
列表或集合的计数通过获取集合的枚举器,然后在递增计数器时迭代项目来工作
以下是System.Linq扩展中的.Count()方法的实现
public static int Count<TSource>(this IEnumerable<TSource> source) { if (source == null) { throw Error.ArgumentNull("source"); } ICollection<TSource> is2 = source as ICollection<TSource>; if (is2 != null) { return is2.Count; } int num = 0; using (IEnumerator<TSource> enumerator = source.GetEnumerator()) { while (enumerator.MoveNext()) { num++; } } return num; }