Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menukar senarai kelas yang diperolehi ke senarai kelas asas di C#?
Menukar senarai kelas yang diperolehi ke senarai kelas asas dalam C#
warisan dalam C# membolehkan membuat kelas yang diperoleh dari kelas asas atau antara muka. Walau bagaimanapun, secara langsung menyerahkan kelas yang diperolehi kepada kelas asasnya tidak dibenarkan. Batasan ini timbul dari ketat sistem jenis mengenai parameter jenis generik.
List
Pertimbangkan contoh ini: List
untuk mengatasinya, kita boleh menggunakan dua kaedah utama:
<code class="language-csharp">interface IA {} class B : IA {} class C : B {} class Test { static void Main(string[] args) { IA a = new C(); // This is valid List<IA> listOfIA = new List<C>(); // Compiler error } }</code>
Kaedah 1: Menggunakan
ConvertAll
Pendekatan ini melangkah melalui senarai kelas yang diperolehi dan secara eksplisit membuang setiap elemen ke jenis kelas asas.
Kaedah 2: Menggunakan Linq's
<code class="language-csharp">List<C> listOfC = new List<C>(); // Your list of derived classes List<IA> listOfIA = listOfC.ConvertAll(x => (IA)x);</code>
Cast
Linq menyediakan penyelesaian yang lebih ringkas menggunakan kaedah . Kaedah ini melakukan penukaran jenis yang sama seperti
Cast<T>
ConvertAll
Kedua -dua kaedah mencapai hasil yang sama: senarai baru yang mengandungi objek dari senarai asal, tetapi dengan jenis kelas asas. Pendekatan Linq (
Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar senarai kelas yang diperolehi ke senarai kelas asas di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!