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 继承接口 IEnumerable ,以便如果接口表示查询,则可以枚举该查询的结果。 枚举会导致执行与 IQueryable 对象关联的表达式树。
“执行表达式树”的定义特定于查询提供程序。 例如,它可能涉及将表达式树转换为基础数据源的相应查询语言。
调用该方法时,将执行不返回可枚举结果的 Execute 查询。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!