Heim > Backend-Entwicklung > C++ > Wie kann ich eine Liste abgeleiteter Klassenobjekte in eine Liste von Basisklassenobjekten in C#konvertieren?

Wie kann ich eine Liste abgeleiteter Klassenobjekte in eine Liste von Basisklassenobjekten in C#konvertieren?

Susan Sarandon
Freigeben: 2025-02-01 17:46:09
Original
532 Leute haben es durchsucht

How Can I Convert a List of Derived Class Objects to a List of Base Class Objects in C#?

Die Konvertierung von der Ableitungsklasse in die Basisklassenliste

In objektorientierten Programmierung sind Erbschaftsklassen und Schnittstellen sehr häufige Praktiken. Wenn wir jedoch mit einer Sammlung zu tun haben, stoßen wir jedoch auf eine offensichtliche Grenze: Warum können wir nicht dieselbe Klasse oder Schnittstelle wie die Basisklasse verwenden, um die Liste zu definieren?

Betrachten Sie das folgende Beispiel:

Versuchen Sie, in
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>(); // 编译器错误
    }
}
Nach dem Login kopieren
zu bilden, was Compiler -Fehler verursacht. Um dieses Problem zu lösen, müssen wir eine Lösung finden.

listOfA <决> Lösung: Expressive Konvertierung und Linq List<C>

Eine Methode besteht darin, die Liste manuell durchzuführen und jedes Element in den erforderlichen Basistyp umzuwandeln. Dies kann mit Methode implementiert werden:

Eine andere Lösung mit LINQ besteht darin, den ConvertAll -Operator zu verwenden, um die gesamte Liste umzuwandeln:

List<A> listOfA = new List<C>().ConvertAll(x => (A)x);
Nach dem Login kopieren

Durch die Verwendung dieser Technologien können wir die Liste der abgeleiteten Klassen effektiv in eine Liste seines Basistyps umwandeln, damit wir im Umgang mit Erbschaftsschemata größere Flexibilität haben. Cast

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste abgeleiteter Klassenobjekte in eine Liste von Basisklassenobjekten in C#konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage