Heim >Backend-Entwicklung >C++ >Wie kann ich generische Typen in C# mithilfe von Typvariablen instanziieren?
Erstellen Sie eine generische Typinstanz mit einer Variablen des enthaltenden Typs
In C# mag es kontraintuitiv erscheinen, dass Sie einen generischen Typ nicht direkt mithilfe einer Variablen des enthaltenden Typs instanziieren können. Der folgende Code veranschaulicht das Problem:
<code class="language-c#">Type k = typeof(double); List<k> lst = new List<k>(); // 编译错误</code>
Dieser Code lässt sich nicht kompilieren, da er versucht, die Variable k zur Angabe eines generischen Typs zu verwenden. Es gibt jedoch einen Workaround, mit dem sich die gewünschte Funktionalität erreichen lässt.
Um eine generische Typinstanz mit einer Variablen des enthaltenden Typs zu erstellen, können Sie Reflection und Activator.CreateInstance() nutzen:
<code class="language-c#">var genericListType = typeof(List<>); var specificListType = genericListType.MakeGenericType(typeof(double)); var list = Activator.CreateInstance(specificListType);</code>
Dieser Code funktioniert folgendermaßen:
genericListType
Ruft die generische List<>
-Typdefinition ab. MakeGenericType()
ruft die generische Typdefinition ab und gibt die tatsächlichen Typparameter an (double
in diesem Fall). Activator.CreateInstance()
Instanziiert einen bestimmten generischen Typ mithilfe der angegebenen Typparameter. Das obige ist der detaillierte Inhalt vonWie kann ich generische Typen in C# mithilfe von Typvariablen instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!