IList IDictionary ICollection IEnumerator IEnumable IQueryable

官网地址:https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.icollection?view=net-6.0

ICollection

定义所有非泛型集合的大小、枚举数和同步方法。
ICollection接口是命名空间中的类的基接口 System.Collections 。它的泛型等效项是System.Collections.Generic.ICollection 接口。
ICollection接口扩展 IEnumerable IDictionary ,并且 IList 是更专用的扩展接口 ICollection 。IDictionary实现是键/值对的集合,如Hashtable类。
IList实现是值的集合,其成员可以按索引访问,如ArrayList类。
某些限制对其元素(如Queue类和类)的访问的集合Stack直接实现 ICollection 接口。
如果IDictionary接口和接口都不IList满足所需集合的要求,请改为从接口派生新的集合类ICollection以获得更大的灵活性。

IList

表示可按照索引单独访问的对象的非泛型集合。
IList是接口的ICollection 后代,是所有非泛型列表的基接口。 IList实现分为三类:只读、固定大小和可变大小。
不能修改IList只读。固定大小 IList 不允许添加或删除元素,但允许修改现有元素。可变大小 IList 允许添加、删除和修改元素。

IDictionary

表示键/值对的非通用集合。
IDictionary接口是键/值对的非一般集合的基接口。
每个元素都是对象中存储的键/值 DictionaryEntry 对。
每个对必须具有唯一键。实现可能因是否允许键为null而异。该值可以是null,并且不一定是唯一的。IDictionary接口允许枚举包含的键和值,但不表示任何特定排序顺序。
IDictionary实现分为三类:只读、固定大小、可变大小。 不能修改 IDictionary 只读对象。固定大小的IDictionary对象不允许添加或删除元素,但允许修改现有元素。
可变大小IDictionary对象允许添加、删除和修改元素。
集合foreach中C#语言(语句Visual Basic)返回集合中 For Each 元素类型的对象。由于对象的每个元素都是键/值对,因此元素类型不是键的类型IDictionary或值的类型。
相反,元素类型为 DictionaryEntry 。
foreach语句是枚举器周围的包装器,只允许从集合读取,但不允许写入集合。

IEnumable

公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。
IEnumerable是可枚举的所有非泛型集合的基接口。
IEnumerable 包含一个方法,GetEnumerator该方法返回一个IEnumerator 。
IEnumerator提供通过公开属性和方法来循环访问集合的功能 Current MoveNext Reset。
最佳做法是在 IEnumerable IEnumerator 集合类上实现和以启用 foreach For Each Visual Basic) 语法的 (,但 IEnumerable 不需要实现。
如果集合未实现 IEnumerable ,则仍必须遵循迭代器模式来支持此语法,方法是提供 GetEnumerator 返回接口、类或结构的方法。
使用 Visual Basic 时,必须提供 IEnumerator 由返回的实现 GetEnumerator 。
使用 c # 进行开发时,必须提供一个类,其中包含 Current MoveNext Reset 由描述的属性和方法, IEnumerator 但类不必实现 IEnumerator 。

IEnumerator

支持对非泛型集合的简单迭代。
IEnumerator 是所有非泛型枚举器的基接口。 它的泛型等效项是 System.Collections.Generic.IEnumerator 接口。
C# 语言的 foreach 语句(在 Visual Basic 中为 for each)隐藏了枚举数的复杂性。 因此,建议使用, foreach 而不是直接操作枚举器。
枚举器可用于读取集合中的数据,但不能用于修改基础集合。

IQueryable

提供针对特定数据源(其中数据类型未指定)评估查询的功能。
该 IQueryable 接口旨在由查询提供程序实现。 它只应由同时实现的提供程序实现 IQueryable。 如果提供程序未实现 IQueryable,则不能对提供程序的数据源使用标准查询运算符。
接口 IQueryable 继承接口 IEnumerable ,以便如果接口表示查询,则可以枚举该查询的结果。 枚举会导致执行与 IQueryable 对象关联的表达式树。
“执行表达式树”的定义特定于查询提供程序。 例如,它可能涉及将表达式树转换为基础数据源的相应查询语言。
调用该方法时,将执行不返回可枚举结果的 Execute 查询。

posted @   peng_boke  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示