作为一个新的.NET3.5程序员,我开始学习LINQ,我发现了一些我以前没有注意到的非常基本的东西:

这本书声称每个数组实现IEnumerable<T>(显然,否则我们不能使用LINQ来实现数组上的对象…).当我看到这一点时,我想我从来没有真正想过这一点,我问自己所有数组还实现了什么——所以我判断了一下

所以我的问题是:定义在哪里?我的意思是,我怎么才能确切地说出每个数组实现了哪些接口呢?

推荐答案

documentation(我的重点):

[.]Array类实现System.Collections.Generic.IList<T>System.Collections.Generic.ICollection<T>System.Collections.Generic.IEnumerable<T>通用接口.The implementations are provided to arrays at run time, and therefore are not visible to the documentation build tools.

EDIT:正如Jb Evain在 comments 中指出的,只有向量(一维数组)实现了通用接口.至于why个多维数组没有实现泛型接口,我不太确定,因为它们确实实现了非泛型接口(请参见下面的类声明).

System.Array类(即every数组)还实现以下非通用接口:

public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable

.net相关问答推荐

我的Azure应用服务从哪里获取应用设置?

如何确定计时器是否正在运行?

C#6.0 字符串插值本地化

我可以从我的应用程序中抛出哪些内置 .NET 异常?

如何从 appsettings.json 中获取价值

使用多个 MemoryCache 实例

struct 中需要覆盖什么以确保平等正常运行?

有什么方法可以在不重新编译的情况下覆盖 .NET Windows 服务名称?

无法加载文件或程序集'System.ComponentModel.Annotations,版本 = 4.1.0.0

如何在可取消的异步/等待中处理 TransactionScope?

设置 System.Drawing.Color 值

POCO 是什么意思?

如何在 RabbitMQ 中设置重试次数?

将日期时间转换为时间跨度

如何在安装后立即启动 .NET Windows 服务?

为什么 Roslyn 中有异步状态机类(而不是 struct )?

C# - 在 WPF 应用程序中保存用户设置的方法?

如何在 C# 中使用迭代器反向读取文本文件

如何卸载Microsoft .NET Core 1.0.0 RC2 - VS 2015 Tooling Preview 1?

如何判断枚举是否包含数字?