c# - Array.Length 和 Array.Count() 之间的区别

标签 c# arrays

<分区>

Possible Duplicate:
count vs length vs size in a collection
Array.Length vs Array.Count

我声明了这个数组:

int[] misInts = new Int[someNumber];

/* make some happy operations with the elements in misInts */

所以我可以通过以下方式获取 SomeNumber 的值: misInts.Length 或 misInts.Count()

C# 中的数组继承自 IEnumerable。所以如果我有:

Func<int> misIntsF = Enumerable.Range(0, someNumber).Select(c=> /* make some happy operations that return Integers */);

有人告诉我,如果我执行 misIntsF.Count(),我实际上会执行 Lambda 表达式中的代码,获取结果并对它们进行计数。但是数组 misInts 没有 Lambda 表达式。

misInts.Count() 是否比 misInts.Length 更耗内存? misInts.Count() 和 misInts.Length 有什么区别?

最佳答案

array.Count()实际上是对 Enumerable.Count<T>(IEnumerable<T>) 的调用扩展方法。

因为这个方法需要一个 IEnumerable<T> (与具有 ICollection<T> 属性的 Count 相反),它需要遍历整个序列才能确定它有多大。

但是,它实际上检查参数是否实现了ICollection<T> (哪个数组做),如果是,则返回 Count直接。
因此,调用 .Count()在阵列上并不比 .Length 慢多少,尽管它会涉及额外的类型转换。

关于c# - Array.Length 和 Array.Count() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13685541/

相关文章:

c# - 使用事件处理程序进行 GUI 调用

arrays - 异步处理子数组并将结果缩减为单个数组

javascript - 简单 Javascript 代码中的奇怪问题,非空数组参数达到函数空

php - 使用 ng-repeat 循环遍历格式类似于字符串的数组

c# - 零有不同的十进制值吗?

c# - 鼠标光标处的 UWP 位置浮出控件

arrays - 如何使用特定值初始化矩阵的所有条目?

c# - 自定义数组排序

c# - 在 MVC 中处理来自共享控件的事件

c# - 将控件添加到 Gridview 单元格