Heim >Backend-Entwicklung >C++ >Wie konvertiere ich eine Liste in eine Liste in .NET?

Wie konvertiere ich eine Liste in eine Liste in .NET?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-17 00:56:13861Durchsuche

How to Convert a List to a List in .NET?

Liste in Liste in .NET umwandeln

Diese Anleitung erklärt, wie man eine Liste von Client Objekten (List<Client>) in eine Liste ihrer entsprechenden IDic Schnittstellen (List<IDic>) umwandelt.

Warum das direkte Casting fehlschlägt

Direktes Umwandeln von einem abgeleiteten Typ (wie Client) in einen Basistyp (IDic) ist in .NET zulässig. Die Umkehrung ist jedoch aufgrund von Kovarianzbeschränkungen nicht einfach. Diese Einschränkungen verhindern unsichere Vorgänge, bei denen eine Basistypliste unerwartet abgeleitete Typelemente enthalten könnte, wodurch die Typsicherheit gewahrt bleibt.

Effektive Konvertierungsmethoden

Zwei zuverlässige Methoden erzielen die gewünschte Konvertierung:

1. Nutzung von IEnumerable<IDic> (.NET 4 und höher)

.NET 4 und spätere Versionen unterstützen Kovarianz mit IEnumerable<T>. Dies ermöglicht die Konvertierung von List<Client> in IEnumerable<IDic> und ermöglicht die Iteration über Client-Objekte als IDic-Instanzen.

2. Erstellen einer neuen Liste

Um ein List<IDic> zu erstellen, müssen Sie explizit eine neue Liste erstellen und diese mit den Schnittstellenreferenzen füllen. .NET 4 bietet hierfür die Methode ToList<T>(). .NET 3.5 verwendet Cast<T>() gefolgt von ToList().

Wichtiger Hinweis zur Datenunabhängigkeit

Beide Techniken generieren separate Listen und wahren so die Typsicherheit. Entscheidend ist, dass Änderungen am ursprünglichen List<Client> nicht automatisch das neue List<IDic> aktualisieren. In beiden Listen sind nur Änderungen sichtbar, die direkt an den Client-Objekten selbst vorgenommen wurden.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine Liste in eine Liste in .NET?. 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