Cara Tatasusunan dalam C# Melaksanakan Separa IList
Walaupun tidak mengisytiharkan secara terbuka sifat Count IList, tatasusunan dalam C# boleh dipertimbangkan untuk melaksanakan sebahagiannya antara muka.
Butiran Pelaksanaan
Walaupun tatasusunan tidak melaksanakan IList secara langsung, Common Language Runtime (CLR) mencipta jenis tatasusunan konkrit yang sememangnya melaksanakan antara muka. Walau bagaimanapun, pelaksanaan ini tidak nyata melalui cara tradisional.
Secara khusus, CLR menggunakan kelas yang ditentukan sistem yang dipanggil System.SZArrayHelper untuk menyediakan pelaksanaan asas IList untuk tatasusunan. Pelaksanaan ini termasuk sifat Count, yang secara dalaman mewakilkan kepada sifat Length tatasusunan.
Contoh Penggunaan
Untuk menghantar tatasusunan ke IList, pengkompil menjana kod IL yang melakukan cast menggunakan arahan castclass. CLR kemudiannya menggunakan kelas SZArrayHelper untuk menyediakan pelaksanaan antara muka.
Keterbatasan
Pelaksanaan separa IList oleh tatasusunan datang dengan beberapa batasan. Sebagai contoh, cuba menggunakan kaedah GetInterfaceMap pada jenis tatasusunan dengan parameter antara muka ditetapkan kepada IList akan menyebabkan pengecualian "Antaramuka tidak ditemui".
Implikasi
Pelaksanaan IList oleh tatasusunan melalui SZArrayHelper ialah kes penaipan seperti itik, di mana CLR memberikan ilusi bahawa tatasusunan melaksanakan antara muka walaupun ia tidak melakukannya secara eksplisit. Ini membolehkan tatasusunan digunakan sebagai IList objek tanpa memerlukan penyesuai tersuai.
Atas ialah kandungan terperinci Bagaimanakah Tatasusunan C# Melaksanakan Sebahagian Antara Muka IList?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!