所有数组都在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

回到顶部