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.
class Animal { } class Giraffe : Animal { } static void Main(string[] args) { List<Giraffe> giraffes = new List<Giraffe>(); List<Animal> animals = giraffes; // 编译时错误 }
<变> 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 menyenaraikanList<Animal> animals = (List<Animal>)giraffes; // 不推荐,可能导致运行时错误
List<Animal> animals = giraffes.ConvertAll(g => (Animal)g);
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!