Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya memberikan senarai objek kelas yang diperolehi ke senarai kelas asas di C#?
c# Dalam bahasa pengaturcaraan C#, senarai objek kelas yang diperolehi ke senarai rujukan kelas asas akan mencetuskan masalah kerjasama. Masalah ini berlaku apabila kategori yang diperoleh tidak wujud di kelas asas.
Sebagai contoh, pertimbangkan kod berikut:
Dalam kod ini, senarai objek zirafah diberikan kepada senarai yang dirujuk oleh haiwan. Walau bagaimanapun, tugasan ini gagal semasa penyusunan disebabkan oleh masalah koordinasi.
<code class="language-csharp">class Animal { } class Giraffe : Animal { } static void Main(string[] args) { List<Giraffe> giraffes = new List<Giraffe>(); List<Animal> animals = giraffes; // 编译时错误 }</code>
kerjasama dan bukan kebolehpasaran
jenis generik C #boleh diselaraskan atau tidak berubah. Penyelarasan membolehkan rujukan kelas asas merujuk objek kelas yang diperolehi, sementara tidak -Degeneration menghalang tugasan tersebut. Untuk senarai, tingkah laku lalai adalah bukan kebolehpasaran, yang bermaksud bahawa senarai tidak boleh diberikan untuk disenaraikan
.
Untuk menyelesaikan masalah ini, terdapat beberapa penyelesaian:
Penukaran Eksplisit:Kod berikut boleh digunakan untuk memaparkan senarai
untuk menyenaraikan<code class="language-csharp">List<Animal> animals = (List<Animal>)giraffes; // 不推荐,可能导致运行时错误</code>. Contohnya:
<code class="language-csharp">List<Animal> animals = giraffes.ConvertAll(g => (Animal)g);</code>Kaedah yang harus dipilih bergantung kepada situasi tertentu dan keperluan untuk keteguhan kod. Kaedah
Atas ialah kandungan terperinci Bolehkah saya memberikan senarai objek kelas yang diperolehi ke senarai kelas asas di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!