当前位置:  开发笔记 > 编程语言 > 正文

dot net是否有像IEnumerable这样的接口和Count属性?

如何解决《dotnet是否有像IEnumerable这样的接口和Count属性?》经验,为你挑选了2个好方法。

dot net是否有像IEnumerable这样的接口和count属性?我知道IList和ICollection之类的接口确实提供了Count属性,但似乎这些接口首先是为可变数据结构而设计的,并且用作只读接口似乎是事后的想法 - 存在IsReadOnly字段和mutators抛出异常当这个属性为真时,IMO有足够的证据证明这一点.

目前我正在使用一个名为IReadOnlyCollection的自定义界面(请参阅我自己对这篇文章的回答),但我很高兴知道其他替代方法.



1> Ruben Bartel..:

ICollection系列和IEnumerable系列之间的主要区别在于,对于存在的项目数量缺乏确定性(通常根据需要生成/加载/补充项目) - 在某些情况下,Enumerable可能无法完成生成结果,这就是Count失踪的原因.

根据你的要求,可以得出和添加一个Count,但这违背了这种精神,这就是ICollection的目的 - 一系列的东西都在那里.

另一种方法可能是使用System.Linq.Enumerable.Count方法,即

using System.Linq;

class X
{
   void Y(IEnumerable collection)
   {
      int itemCount = collection.Count();
   }
}

或者使用(System.Linq.Enumerable).ToList()将枚举器中的所有项目拉入Collection并从那里开始工作.

(也是在50个代表之前回答你的评论: - ".count()"位是对扩展类System.Linq.Enumerable的扩展方法的调用 - 扩展方法适用于从IEnumerable派生的所有东西,因为代码有一个"using System.Linq",它将该命名空间中所有类的扩展方法带入范围 - 在本例中它在类Enumerable中.如果你在VS中,按F12将带你进入SLEnumerable的定义BTW C#In Depth是一本非常出色的学习LINQ的书 - 它的页面翻转器真的可以帮助你全面了解LINQ一块一块地学习



2> svick..:

从.Net 4.5开始,有两个新的接口:IReadOnlyCollectionIReadOnlyList.

IReadOnlyCollection是添加IEnumerableCount属性,IReadOnlyList还添加了索引.


最后!是什么让他们这么久?
推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有