为什么C#队列或列表只有count但数组有长度?

参见英文答案 > count vs length vs size in a collection                                    9个
>             .net array – difference between “Length”,“Count()” and “Rank”                                    6个
这可能是一个愚蠢的问题,为什么队列或列表没有Length属性,但只有Count?同样为什么数组有Length属性

谢谢

解决方法

数组是固定的大小,它们总是通过预先定义大小来初始化.

.Length在这里有意义,因为它已修复,没有任何操作可以知道这一点(不计算在内)

另一方面,Versus .Count意味着大小是动态的,并且涉及(计数)操作以了解大小

Why there is no .Length property for a Collection or List?

这确实是一个很好的问题,答案的一部分是上面的不同,但它也受到框架设计本身的影响

在框架设计中,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;
}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...