C# 中的陣列如何部分實現IList
儘管沒有公開聲明IList 的Count 屬性,C# 中的數組可以考慮部分實施介面。
實作細節
雖然數組不直接實作IList,但公共語言運行時(CLR) 創建了一個具體的數組類型,它確實實現了介面.然而,這種實現透過傳統方式並不明顯。
具體來說,CLR 使用一個名為 System.SZArrayHelper 的系統定義類別來提供 IList 的底層實作。對於數組。此實作包括 Count 屬性,該屬性在內部委託給數組的 Length 屬性。
使用範例
要將陣列轉換為 IList,編譯器產生使用castclass指令執行強制轉換的IL程式碼。然後,CLR 利用 SZArrayHelper 類別來提供介面實作。
限制
IList 的部分實作by 陣列有一些限制。例如,嘗試在介面參數設定為 IList 的陣列類型上呼叫 GetInterfaceMap 方法;將導致「找不到介面」異常。
含義
IList 的實現透過SZArrayHelper 的陣列是一種鴨子式打字的情況,其中CLR 提供了數組實現介面的錯覺,即使它沒有明確這樣做。這允許數組用作 IList 。不需要自訂適配器的物件。
以上是C# 陣列如何部分實作 IList 介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!