问题:
C# 中的数组实现 IList
答案:
数组和泛型接口
C# 中的数组实现System.Collections.IList,它不是通用的。它们不直接实现 System.Collections.Generic.IList
CLR 中的隐藏实现
但是,公共语言运行时 (CLR) 动态创建具体的数组类型。这些类型在内部使用 System.SZArrayHelper 类来实现 IList
编译器和 CLR 知识
编译器和 CLR 知道数组类型并了解如何将它们转换为 IList
缺少 Count 属性
Count 属性未显式实现。相反,CLR 在内部使用映射到数组 Length 属性的方法:
internal int get_Count<T>() { T[] _this = JitHelpers.UnsafeCast<T[]>(this); return _this.Length; }
违反规则?
这种内部实现可以说违反了严格的规则接口实现规则。然而,它为数组提供了一种方便且无缝的方式,使其表现得就像实现了 IList
其他见解
以上是尽管缺少公共'Count”属性,C# 数组是否真正实现了'IList”接口?的详细内容。更多信息请关注PHP中文网其他相关文章!