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工作的原始问题。