Im Kontext von ASP.NET MVC-Controller-Aktionen besteht eine Einschränkung darin, dass „offene generische Typen“ nicht verwendet werden können. Dieser Artikel befasst sich mit dem Konzept offener und geschlossener generischer Typen in .NET.
Ein offener generischer Typ in .NET ist ein Typ, der Typparameter enthält, die im Wesentlichen Platzhalter für nicht spezifizierte Typen sind. Diese Typen können Typparameter oder generische Typen sein, die ohne Angabe von Typparametern definiert werden. Beispielsweise ist
Im Gegensatz zu offenen generischen Typen sind geschlossene generische Typen Typen, die keine Typparameter enthalten. Sie werden mithilfe konkreter Typen als Parameter vollständig spezifiziert. Beispielsweise sind List
Während ein offener generischer Typ Typparameter enthält, ist ein ungebundener generischer Typ ein generischer Typ mit nicht spezifizierten Typparametern. Ungebundene Typen können weder direkt in Ausdrücken verwendet noch instanziiert oder aufgerufen werden. Sie stellen eine generische Definition dar, bevor sie an einen bestimmten Typ gebunden werden.
Bedenken Sie den folgenden Codeausschnitt:
<code class="language-c#">class Program { static void Main() { Test<int>(); } static void Test<T>() { Console.WriteLine(typeof(List<T>)); // 打印类型名称 } }</code>
Wenn dieser Code ausgeführt wird, wird „System.Collections.Generic.List`1[System.Int32]“ gedruckt, was einen gebundenen offenen Typ darstellt, da der Typparameter zur Laufzeit bekannt ist: System.Int32.
Ungebundene generische Typen können zur Laufzeit mithilfe der Type.MakeGenericType-Methode gebunden werden. Zum Beispiel:
<code class="language-c#">Type unboundGenericList = typeof(List<>); Type listOfInt = unboundGenericList.MakeGenericType(typeof(int)); if (listOfInt == typeof(List<int>)) Console.WriteLine("构造了一个 List<int> 类型。");</code>
Das Verständnis des Unterschieds zwischen offenen, geschlossenen und ungebundenen generischen Typen ist für die effektive Verwendung von Generika in .NET von entscheidender Bedeutung. Durch die Nutzung dieser Konzepte können Sie flexiblen und wiederverwendbaren Code erstellen, der verschiedene Datentypen effizient verarbeitet.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen offenen, geschlossenen und ungebundenen generischen Typen in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!