Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara menukar senarai kelas yang diperolehi ke senarai kelas asas di C#?

Bagaimana cara menukar senarai kelas yang diperolehi ke senarai kelas asas di C#?

Mary-Kate Olsen
Lepaskan: 2025-02-01 17:41:10
asal
1070 orang telah melayarinya

How to Convert a List of Derived Classes to a List of Base Classes in C#?

c#lirik diubah menjadi senarai kelas asas

Mekanisme warisan membolehkan kita membuat kelas baru berdasarkan kelas yang sedia ada, tetapi konsep yang sama tidak digunakan secara langsung untuk senarai generik. Khususnya, kami tidak dapat mengisytiharkan

dan memberikan senarai jenis yang diperoleh, walaupun kelas yang diperolehi mewarisi kelas berasaskan diri. Sila pertimbangkan contoh berikut:

List<基类>

Kod ini gagal semasa penyusunan, kerana pengkompil mengharapkan senarai objek A, bukan senarai objek C. Untuk menyelesaikan masalah ini, kita perlu menukar senarai objek yang diperoleh ke dalam senarai objek asas.
interface A { }

class B : A { }

class C : B { }

class Test
{
    static void Main(string[] args)
    {
        A a = new C(); // 正确
        List<A> listOfA = new List<C>(); // 编译错误
    }
}
Salin selepas log masuk

<换> Kaedah penukaran

Kaedah menukar <换> ke adalah untuk melancarkan unsur -unsur senarai dan secara manual menukarnya secara manual. Ini boleh dilaksanakan dengan menggunakan

kaedah:

List<派生类> List<基类> di sini, setiap elemen dalam senarai Ateratory C menukarnya untuk menaip A dan tambahkannya ke senarai ListOfa baru. ConvertAll

Kaedah alternatif menggunakan linq
List<A> listOfA = new List<C>().ConvertAll(x => (A)x);
Salin selepas log masuk

atau, kita boleh menggunakan LINQ untuk melaksanakan penukaran:

di sini, Tukar setiap elemen dalam senarai untuk menaip A, dan

mencipta senarai baru yang mengandungi elemen penukaran.

Atas ialah kandungan terperinci Bagaimana cara menukar senarai kelas yang diperolehi ke senarai kelas asas di C#?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan