开发者社区> 问答> 正文

所有数组都在C#中实现什么接口?

作为一个新的.NET 3.5程序员,我开始学习LINQ,并且发现了一些我之前从未注意到的非常基本的东西:

这本书声称每个数组都实现了IEnumerable (显然,否则我们不能使用LINQ来处理数组上的对象...)。当我看到此消息时,我以为自己从未真正想到过,我问自己所有其他数组还实现了什么-因此我System.Array使用对象浏览器进行了检查 (因为它是CLR中每个数组的基类),并且令我惊讶的是,它没有实现IEnumerable 。

所以我的问题是:定义在哪里?我的意思是,我该如何确切地知道每个数组实现哪些接口? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 11:23:16 376 0
1 条回答
写回答
取消 提交回答
  • 您可以使用一个小的代码段凭经验找到问题的答案:

    foreach (var type in (new int[0]).GetType().GetInterfaces()) Console.WriteLine(type); 运行上面的代码片段将导致以下输出(on .NET 4.0):

    System.ICloneable System.Collections.IList System.Collections.ICollection System.Collections.IEnumerable System.Collections.IStructuralComparable System.Collections.IStructuralEquatable System.Collections.Generic.IList1[System.Int32] System.Collections.Generic.ICollection1[System.Int32] System.Collections.Generic.IEnumerable1[System.Int32] (1表示 )

    在.NET 4.5(.NET Standard 1.0和之后)之后,有两个附加接口:

    System.Collections.Generic.IReadOnlyList1[System.Int32] System.Collections.Generic.IReadOnlyCollection1[System.Int32]

    2020-02-09 11:23:36
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载