作为一个新的.NET 3.5程序员,我开始学习LINQ,并且发现了一些我之前从未注意到的非常基本的东西:
这本书声称每个数组都实现了IEnumerable (显然,否则我们不能使用LINQ来处理数组上的对象...)。当我看到此消息时,我以为自己从未真正想到过,我问自己所有其他数组还实现了什么-因此我System.Array使用对象浏览器进行了检查 (因为它是CLR中每个数组的基类),并且令我惊讶的是,它没有实现IEnumerable 。
所以我的问题是:定义在哪里?我的意思是,我该如何确切地知道每个数组实现哪些接口? 问题来源于stack overflow
您可以使用一个小的代码段凭经验找到问题的答案:
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.ICollection
1[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.IReadOnlyCollection
1[System.Int32]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。