問題:
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中文網其他相關文章!