


Adakah C# Arrays Benar-benar Melaksanakan Antara Muka `IList` Walaupun Tiada Harta `Count` Awam?
Jan 05, 2025 pm 08:14 PMArray dalam C#: Memecahkan IList<T> Implementasi Antara Muka?
Soalan:
Array dalam C# melaksanakan IList<T> tetapi secara misteri tidak mempunyai harta Count awam. Adakah ini melanggar peraturan pelaksanaan antara muka?
Jawapan:
Array dan Antara Muka Generik
Array dalam C# implement System.Collections.IList, yang bukan generik. Mereka tidak langsung melaksanakan System.Collections.Generic.IList<T> kerana ia bukan generik.
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<T> antara muka.
Pengetahuan Pengkompil dan CLR
Pengkompil dan CLR mengetahui jenis tatasusunan dan memahami cara menghantarnya ke IList<T>. CLR menyediakan pelaksanaan yang mengakses objek tatasusunan yang mendasari melalui kelas SZArrayHelper.
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<T> sepenuhnya.
Wawasan Tambahan
- CLR mempunyai penggantian jenis lain, seperti映射IList<T> kepada IVector<T> dalam konteks WinRT.
- Pengabstraksian merawat tatasusunan seolah-olah mereka melaksanakan sepenuhnya IList<T> adalah mudah tetapi mungkin mengelirukan dalam sesetengah kes.
- Kaedah GetInterfaceMap() tidak berfungsi dengan jenis tatasusunan konkrit untuk antara muka generik, mendedahkan pelaksanaan tersembunyi.
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
