Heim >Backend-Entwicklung >C++ >Kann die Liste der Liste in C#zugewiesen werden?

Kann die Liste der Liste in C#zugewiesen werden?

Linda Hamilton
Linda HamiltonOriginal
2025-02-02 05:36:11493Durchsuche

Can List Be Assigned to List in C#?

C# Varianzproblem: Signieren Sie die Liste & lt;

im Problem der Liste & lt; Gibt es eine Lösung? Beispiel

Betrachten Sie den folgenden Code:

Zusammenarbeit

Koordination ist die Fähigkeit, das abgeleitete Typobjekt zu halten, wenn erklärt, dass die Datenstruktur ein Basistyp -Objekt enthalten kann. Im obigen Beispiel kann List
<code class="language-csharp">class Animal { }
class Giraffe : Animal { }

static void Main(string[] args)
{
    // 数组赋值成功
    Animal[] animals = new Giraffe[10];

    // 隐式赋值失败
    List<Animal> animalsList = new List<Giraffe>(); // 错误

    // 显式转换失败
    List<Animal> animalsList2 = (List<Animal>)new List<Giraffe>(); // 错误
}</code>
ein Objekt des Tieres oder eines abgeleiteten Typs (z. B. Giraffe) enthalten.

Der quadratische Unterschied im Array und die Liste

Das Array unterstützt die Referenztypvarianz zur Laufzeit und führt die Typinspektion durch. Generika sind jedoch so konzipiert, dass sie während der Kompilierung die Type Sicherheit erreichen. Daher schlägt die versteckte und explizite Zuordnung von List zur Auflistung fehl.

unsicher quadratische Differenz

Wenn diese Art von Quadratvarianz zulässig ist, werden Laufzeitfehler verursacht, wie im folgenden Code gezeigt:

Der Sicherheitsunterschied im C# 4

c# 4 wurde Unterstützung für die generische Sicherheitsvarianz in der Schnittstelle und Verantwortung eingeführt. Die Schnittstellen wie Func (kollaborativ) und Verantwortung wie Action (inverse) gewährleisten die Type -Sicherheit.

Lösung

<code class="language-csharp">List<Giraffe> giraffes = new List<Giraffe>();
giraffes.Add(new Giraffe());
List<Animal> animals = giraffes; // 错误
animals.Add(new Lion()); // 不安全,违反类型安全</code>

In C# 2, wenn Sie keine einzelne Liste verwalten müssen, können Sie die Liste .Convertall verwenden, um eine neue Liste mit dem Bedarfstyp zu erstellen.

Diese Revisions-Ausgabe behält das Originalbild bei, um den Text umzusetzen, um die Pseudoorientierung zu erreichen

Das obige ist der detaillierte Inhalt vonKann die Liste der Liste in C#zugewiesen werden?. 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