加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:27:36 所属栏目:百科 来源:网络整理
导读:参见英文答案 count vs length vs size in a collection????????????????????????????????????9个 ???????????? .net array – difference between “Length”,“Count()” and “Rank”????????????????????????????????????6个 这可能是一个愚蠢的问题,为
参见英文答案 > 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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读