ASP.NET MVC コントローラー アクションのコンテキストでは、「オープン ジェネリック型」を使用できないという制限があります。この記事では、.NET のオープン ジェネリック型とクローズド ジェネリック型の概念を詳しく説明します。
.NET のオープン ジェネリック型は、型パラメーターを含む型であり、型パラメーターは本質的には未指定の型のプレースホルダーです。これらの型は、型パラメーターであることも、型パラメーターを指定せずに定義されたジェネリック型であることもできます。たとえば、List
オープン ジェネリック型とは対照的に、クローズド ジェネリック型は型パラメーターを含まない型です。これらは、具体的な型をパラメータとして使用して完全に指定されます。たとえば、List
オープン ジェネリック型には型パラメーターが含まれていますが、アンバインド ジェネリック型は型パラメーターが指定されていないジェネリック型です。非バインド型は式で直接使用したり、インスタンス化したり呼び出したりすることはできません。これらは、特定の型にバインドする前の汎用定義を表します。
次のコード スニペットを考えてみましょう:
<code class="language-c#">class Program { static void Main() { Test<int>(); } static void Test<T>() { Console.WriteLine(typeof(List<T>)); // 打印类型名称 } }</code>
このコードが実行されると、「System.Collections.Generic.List`1[System.Int32]」が出力されます。これは、型パラメーターが実行時に既知であるため、バインドされたオープン型を表します: System.Int32。
アンバインドされたジェネリック型は、Type.MakeGenericType メソッドを使用して実行時にバインドできます。例:
<code class="language-c#">Type unboundGenericList = typeof(List<>); Type listOfInt = unboundGenericList.MakeGenericType(typeof(int)); if (listOfInt == typeof(List<int>)) Console.WriteLine("构造了一个 List<int> 类型。");</code>
.NET でジェネリックを効果的に使用するには、オープン、クローズ、およびアンバインドのジェネリック型の違いを理解することが重要です。これらの概念を活用することで、さまざまなデータ型を効率的に処理する、柔軟で再利用可能なコードを作成できます。
以上が.NET のオープン、クローズ、およびアンバインドのジェネリック型の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。