Heim > Backend-Entwicklung > C++ > Kann eine C#-Liste mehrere generische Typen mit unterschiedlichen Typparametern enthalten?

Kann eine C#-Liste mehrere generische Typen mit unterschiedlichen Typparametern enthalten?

Barbara Streisand
Freigeben: 2025-01-18 16:32:13
Original
439 Leute haben es durchsucht

Can a C# List Hold Multiple Generic Types with Different Type Parameters?

Verwenden einer C#-Liste mit mehreren generischen Typen: Eine Lösung

Die Herausforderung besteht darin, eine C#-Liste zu erstellen, die mehrere generische Typen mit unterschiedlichen Typparametern in derselben Liste enthalten kann. Stellen Sie sich eine Metadata<T>-Klasse vor, die auf Werttypen beschränkt ist. Ziel ist es, eine Liste zu erstellen, die Metadata<int>-, Metadata<bool>- und Metadata<double>-Objekte gleichzeitig speichern kann.

Die direkte Verwendung einer Liste von Metadata<T> ist nicht möglich, da T ein einzelner, konkreter Typ sein muss. Eine Lösung mittels Vererbung bietet jedoch einen praktischen Ansatz.

Lösung mittels Vererbung:

Dieser Ansatz führt eine abstrakte Basisklasse Metadata ein und leitet daraus spezialisierte Klassen wie Metadata<T> ab.

<code class="language-csharp">public abstract class Metadata { }

public class Metadata<T> : Metadata where T : struct
{
    private T mDataType; 
    // ... other members ...
}</code>
Nach dem Login kopieren

Jetzt kann eine Liste der abstrakten Basisklasse Metadata erstellt werden:

<code class="language-csharp">List<Metadata> metadataObjects = new List<Metadata>();</code>
Nach dem Login kopieren

Diese Liste kann nun Instanzen verschiedener Metadata<T>Typen aufnehmen:

<code class="language-csharp">metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());</code>
Nach dem Login kopieren

Dies löst das Problem auf elegante Weise, indem ein gemeinsamer Typ (Metadata) für die Liste bereitgestellt wird und gleichzeitig typspezifische Implementierungen durch Vererbung ermöglicht werden. Der Zugriff auf das spezifische T in jedem Objekt würde eine Rückumwandlung in den entsprechenden Metadata<T>-Typ erfordern. Dies ist ein häufiges Muster beim Umgang mit Polymorphismus und generischen Typen in C#.

Das obige ist der detaillierte Inhalt vonKann eine C#-Liste mehrere generische Typen mit unterschiedlichen Typparametern enthalten?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage