C# 在没有实现IEnumerable的情况下,我们的自定义类数组如何与foreach一起工作?

C# 在没有实现IEnumerable的情况下,我们的自定义类数组如何与foreach一起工作?,c#,.net,foreach,ienumerable,C#,.net,Foreach,Ienumerable,这个长标题已经包含了我所有的问题,所以我只想举个例子 MyClass[] array 如果不实现IEnumerable接口的方法,该数组如何与Foreach一起工作 实现IEnumerable。引用文件: 在.NET Framework 2.0版中 数组类实现 系统.Collections.Generic.IList(T), 系统.集合.通用.ICollection(T), 和 System.Collections.Generic.IEnumerable(T) 通用接口。这个 实现提供给阵列

这个长标题已经包含了我所有的问题,所以我只想举个例子

MyClass[] array
如果不实现IEnumerable接口的方法,该数组如何与Foreach一起工作

实现IEnumerable。引用文件:

在.NET Framework 2.0版中 数组类实现 系统.Collections.Generic.IList(T), 系统.集合.通用.ICollection(T), 和 System.Collections.Generic.IEnumerable(T) 通用接口。这个 实现提供给阵列 在运行时,因此不是 对文档构建可见 工具。因此,通用 接口不会出现在 数组的声明语法 类,并且没有引用 以下接口成员的主题: 只能通过将数组强制转换为 泛型接口类型(显式) 接口实现)。钥匙 当你投下一个球时要注意的事情 这些接口之一的数组是 添加、插入或删除的成员 移除元素并抛出 不支持例外


框架类型数组实现IEnumerable…因此,.NET中的任何数组(任何类型)都实现IEnumerable。

foreach不需要from类型来实现IEnumerable接口,它只需要GetEnumerator()方法。

以下内容来自

在C#中,这不是绝对必要的 对于要从中继承的集合类 按顺序排列的IEnumerable和IEnumerator 与foreach兼容。只要 由于该类具有所需的 GetEnumerator、MoveNext、Reset和当前成员,它将与 弗雷奇。省略接口会导致错误 使您能够 定义当前目标的返回类型 要比Object更具体,而Object 提供类型安全性


该类需要实现所有IEnumerable方法,而不仅仅是GetEnumerator()@Steve:
IEnumerable
只有一个方法,
GetEnumerator
!这就是我早上第一件事回答问题的结果。我在回答这个问题时是从MSDN信息中填写的,这表明需要额外的方法,这些方法在IEnumerator接口上。为了类型安全,您可以(而且应该)实现IEnumerable我没有发现我不能在自己的代码中使用IEnumerable的情况,我只是回答了如何在不使用IEnumerable接口的情况下让foreach工作的原始问题。