Heim > Backend-Entwicklung > C++ > Wie kann ich eine Liste in eine Liste in C# umwandeln?

Wie kann ich eine Liste in eine Liste in C# umwandeln?

DDD
Freigeben: 2025-01-09 22:41:41
Original
441 Leute haben es durchsucht

How Can I Cast a List to a List in C#?

Konvertieren einer Liste abgeleiteter Klassen in eine Liste von Basisklassen in C#

Dieses Beispiel zeigt ein häufiges Problem: Übergabe einer Liste abgeleiteter Klassenobjekte (z. B. List<Cat>) an eine Methode, die eine Liste von Basisklassenobjekten (List<Animal>) erwartet. Eine direkte Zuweisung ist nicht zulässig, da ein Basisklassenverweis nicht direkt auf ein abgeleitetes Klassenobjekt verweisen kann.

Das Problem:

Der Versuch, ein List<Cat> an eine Methode mit einem List<Animal>-Parameter zu übergeben, führt zu einem Compilerfehler.

Die Lösung: Verwendung von IEnumerable und Kovarianz

Die Lösung nutzt die generische Kovarianz von C#. Anstatt List<Animal> zu verwenden, ändern Sie den Methodenparametertyp in IEnumerable<Animal>. IEnumerable ist eine schreibgeschützte Schnittstelle; Dadurch wird verhindert, dass die Methode die ursprüngliche Sammlung ändert, wodurch mögliche Bedenken hinsichtlich der Typsicherheit beseitigt werden.

Überarbeiteter Code:

<code class="language-csharp">class Animal
{
    public virtual void Play(IEnumerable<Animal> animals) { }
}

class Cat : Animal
{
    public override void Play(IEnumerable<Animal> animals)
    {
        //Implementation
    }
}

class Program
{
    static void Main()
    {
        Cat myCat = new Cat();
        myCat.Play(new List<Cat>()); // This now compiles successfully
    }
}</code>
Nach dem Login kopieren

Dies funktioniert, weil List<Cat> implizit in IEnumerable<Cat> konvertiert wird und IEnumerable<Cat> mit IEnumerable<Animal> kovariant ist. Die Play-Methode kann jetzt sicher durch die Sammlung iterieren, ohne zu versuchen, sie zu ändern. Dieser Ansatz gewährleistet die Typsicherheit und ermöglicht gleichzeitig eine flexible Methodenparametrisierung.

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

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage