【发布时间】:2011-03-04 10:51:41
【问题描述】:
这个长标题已经包含了我所有的问题,所以我只想举个例子
MyClass[] array
这个数组如何在不实现 IEnumerable 接口的方法的情况下与 Foreach 一起工作?
【问题讨论】:
标签: c# .net foreach ienumerable
这个长标题已经包含了我所有的问题,所以我只想举个例子
MyClass[] array
这个数组如何在不实现 IEnumerable 接口的方法的情况下与 Foreach 一起工作?
【问题讨论】:
标签: c# .net foreach ienumerable
Array 实现 IEnumerable。引用文档:
在 .NET Framework 2.0 版中, 数组类实现 System.Collections.Generic.IList(T), System.Collections.Generic.ICollection(T), 和 System.Collections.Generic.IEnumerable(T) 通用接口。这 提供给数组的实现 在运行时,因此不是 对文档构建可见 工具。结果,通用 接口不会出现在 数组的声明语法 类,并且没有参考 接口成员的主题是 只能通过将数组转换为 通用接口类型(显式 接口实现)。钥匙 施放时要注意的事情 这些接口之一的数组是 添加、插入或 删除元素抛出 NotSupportedException。
【讨论】:
框架类型 Array 实现 IEnumerable...因此,.NET 中的任何数组(任何类型)都实现 IEnumerable。
【讨论】:
foreach 不需要 from 类型来实现 IEnumerable 接口,它只需要 GetEnumerator() 方法。
【讨论】:
IEnumerable 只有一个方法,GetEnumerator!
以下来自MSDN
在 C# 中,这不是绝对必要的 用于继承的集合类 IEnumerable 和 IEnumerator 按顺序排列 与foreach兼容。只要 因为班级有要求 GetEnumerator、MoveNext、Reset 和 Current members,它将与 前锋。 省略接口有 使您能够 定义 Current 的返回类型 比 Object 更具体,后者 提供类型安全。
【讨论】: