Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Tatasusunan C# Nampaknya Melaksanakan IList Tanpa Harta Kiraan Eksplisit?

Bagaimanakah Tatasusunan C# Nampaknya Melaksanakan IList Tanpa Harta Kiraan Eksplisit?

Susan Sarandon
Lepaskan: 2025-01-05 09:30:39
asal
385 orang telah melayarinya

How Do C# Arrays Seemingly Implement IList Without an Explicit Count Property?

Cara Tatasusunan Melaksanakan Separa IList, Walaupun Harta Kiraan Hilang

Dalam C#, tatasusunan melaksanakan IList, namun mereka kekurangan sifat Count yang diisytiharkan secara eksplisit dalam antara muka. Ini telah menimbulkan persoalan tentang sama ada tingkah laku ini melanggar peraturan pelaksanaan antara muka atau hanya salah faham.

Menyelidiki Rangka Kerja

Walaupun tatasusunan tidak melaksanakan IList generik; antara muka. Walau bagaimanapun, pelaksanaan langsung tidak wujud.

Pendekatan Quacks-Like-A-Duck CLR

CLR melaksanakan teknik khas untuk tatasusunan, sama seperti yang digunakan untuk nilai jenis. Pengkompil mengiktiraf hantaran kepada IList dan mengarahkan CLR untuk melaksanakannya melalui objek tatasusunan yang mendasari. CLR kemudiannya mewakilkan pelaksanaan kepada kelas System.SZArrayHelper tersembunyi, yang melaksanakan antara muka yang diperlukan.

Count Property Implementation

Walaupun tidak diisytiharkan secara eksplisit, sifat Count boleh boleh diakses. Walau bagaimanapun, ia dilaksanakan seperti berikut:

internal int get_Count<T>() {
    // Warning: "this" is an array, not an SZArrayHelper
    T[] _this = JitHelpers.UnsafeCast<T[]>(this);
    return _this.Length;
}
Salin selepas log masuk

Seperti yang dicadangkan oleh ulasan, tingkah laku ini mungkin dianggap sebagai pelanggaran peraturan, tetapi ia memudahkan pengendalian tatasusunan yang cekap.

Kesimpulan

Array melaksanakan sebahagiannya IList melalui pendekatan cuak-like-a-duck CLR. Walaupun sifat Count tidak ditakrifkan secara eksplisit, ia dilaksanakan secara dalaman oleh CLR, membenarkan penyepaduan yang lancar antara tatasusunan dan koleksi generik.

Atas ialah kandungan terperinci Bagaimanakah Tatasusunan C# Nampaknya Melaksanakan IList Tanpa Harta Kiraan Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan