Rumah >pembangunan bahagian belakang >C++ >Adakah C# Arrays Benar-benar Melaksanakan Antara Muka `IList` Walaupun Tiada Harta `Count` Awam?
Soalan:
Array dalam C# melaksanakan IList
Jawapan:
Array dan Antara Muka Generik
Array dalam C# implement System.Collections.IList, yang bukan generik. Mereka tidak langsung melaksanakan System.Collections.Generic.IList
Pelaksanaan Tersembunyi dalam CLR
Walau bagaimanapun, Common Language Runtime (CLR) mencipta jenis tatasusunan konkrit secara dinamik. Jenis ini secara dalaman menggunakan kelas System.SZArrayHelper untuk melaksanakan IList
Pengetahuan Pengkompil dan CLR
Pengkompil dan CLR mengetahui jenis tatasusunan dan memahami cara menghantarnya ke IList
Harta Kiraan Hilang
Harta Kiraan tidak dilaksanakan secara eksplisit. Sebaliknya, CLR secara dalaman menggunakan kaedah yang memetakan kepada sifat Length tatasusunan:
internal int get_Count<T>() { T[] _this = JitHelpers.UnsafeCast<T[]>(this); return _this.Length; }
Melanggar Peraturan?
Pelaksanaan dalaman ini boleh dikatakan melanggar peraturan yang ketat. peraturan pelaksanaan antara muka. Walau bagaimanapun, ia menyediakan cara yang mudah dan lancar untuk tatasusunan berkelakuan seolah-olah mereka melaksanakan IList
Wawasan Tambahan
Atas ialah kandungan terperinci Adakah C# Arrays Benar-benar Melaksanakan Antara Muka `IList` Walaupun Tiada Harta `Count` Awam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!