所有数组都在C#中实现什么接口?
作为一个新的.NET 3.5程序员,我开始学习LINQ,发现了一些我以前没有注意到的非常基本的东西:
这本书声称每个数组都实现了IEnumerable<T>
(显然,否则我们不能使用LINQ来处理数组上的对象…)。当我看到此消息时,我以为自己从未真正想到过,我问自己所有其他数组还实现了什么-
因此我System.Array
使用对象浏览器进行了检查
(因为它是CLR中每个数组的基类),并且令我惊讶的是,它没有实现IEnumerable<T>
。
所以我的问题是:定义在哪里?我的意思是,我该如何确切地知道每个数组实现哪些接口?
回答:
从文档(重点是我的):
[…]
Array类实现
System.Collections.Generic.IList<T>
,System.Collections.Generic.ICollection<T>
以及System.Collections.Generic.IEnumerable<T>
通用接口。
正如Jb Evain在他的评论中指出的那样,只有向量(一维数组)实现了通用接口。至于 为什么
多维数组不实现通用接口,我不确定,因为它们确实实现了非通用接口(请参见下面的类声明)。
的System.Array
类(即 每 阵列)也实现了这些非通用接口:
public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable
以上是 所有数组都在C#中实现什么接口? 的全部内容, 来源链接: utcz.com/qa/408096.html