Jadual Kandungan
Array dalam C#: Memecahkan IList<T> Implementasi Antara Muka?
Rumah pembangunan bahagian belakang C++ Adakah C# Arrays Benar-benar Melaksanakan Antara Muka `IList` Walaupun Tiada Harta `Count` Awam?

Adakah C# Arrays Benar-benar Melaksanakan Antara Muka `IList` Walaupun Tiada Harta `Count` Awam?

Jan 05, 2025 pm 08:14 PM

Do C# Arrays Truly Implement the `IList` Interface Despite Lacking a Public `Count` Property?

Array 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&lt;T&gt;() {
    T[] _this = JitHelpers.UnsafeCast&lt;T[]&gt;(this);
    return _this.Length;
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Mar 03, 2025 pm 05:52 PM

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

Gulc: Perpustakaan C dibina dari awal Gulc: Perpustakaan C dibina dari awal Mar 03, 2025 pm 05:46 PM

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Mar 03, 2025 pm 05:53 PM

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Mar 03, 2025 pm 05:53 PM

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza Penggunaan dan perkongsian frasa yang berbeza Mar 03, 2025 pm 05:51 PM

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Mar 03, 2025 pm 05:51 PM

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

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Mar 12, 2025 pm 04:50 PM

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Mar 12, 2025 pm 04:52 PM

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

See all articles