微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐