Heim >Backend-Entwicklung >C++ >Wie konvertieren Sie eine Liste abgeleiteter Klassen in eine Liste von Basisklassen in C#?

Wie konvertieren Sie eine Liste abgeleiteter Klassen in eine Liste von Basisklassen in C#?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-02-01 17:41:101002Durchsuche

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

C#Die Texte werden in eine Liste der Basisklassen

verwandelt Der Vererbungsmechanismus ermöglicht es uns, neue Klassen basierend auf der vorhandenen Klasse zu erstellen. Das gleiche Konzept gilt jedoch nicht direkt für generische Listen. Insbesondere können wir keine

deklarieren und eine Liste abgeleiteter Typen zuweisen, auch wenn die abgeleitete Klasse die selbstbasierte Klasse erbt. Bitte betrachten Sie das folgende Beispiel:

List<基类>

Dieser Code schlägt während der Kompilierung fehl, da der Compiler eine Liste eines A -Objekts erwartet, nicht die Liste des C -Objekts. Um dieses Problem zu lösen, müssen wir die Liste der abgeleiteten Objekte in eine Liste von Basisobjekten umwandeln.
<code class="language-csharp">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>(); // 编译错误
    }
}</code>

Konvertierungsmethode

Die Methode zur Konvertierung von in besteht darin, die Listenelemente zu iterieren und manuell manuell zu konvertieren. Dies kann mit

Methode implementiert werden:

List<派生类> List<基类> Hier konvertieren jedes der Elemente in der iteratorischen C -Liste sie in ein Typ A und fügen Sie die neue Liste der Liste hinzu. ConvertAll

Die alternative Methode zur Verwendung von Linq
<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>

oder wir können LINQ verwenden, um die Konvertierung auszuführen:

hier konvertieren Sie jedes Element in der Liste in Typ A und erstellt

eine neue Liste, die das Conversion -Element enthält.

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

Stellungnahme:
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