ホームページ >バックエンド開発 >C++ >型変数を使用して C# でジェネリック型をインスタンス化するにはどうすればよいですか?

型変数を使用して C# でジェネリック型をインスタンス化するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-13 07:29:11777ブラウズ

How Can I Instantiate Generic Types in C# Using Type Variables?

包含型の変数を使用してジェネリック型インスタンスを作成します

C# では、包含型の変数を使用してジェネリック型を直接インスタンス化できないことは直観に反しているように思えるかもしれません。次のコードは問題を示しています:

<code class="language-c#">Type k = typeof(double);
List<k> lst = new List<k>(); // 编译错误</code>

このコードは、変数 k を使用してジェネリック型を指定しようとしているため、コンパイルできません。ただし、目的の機能を実現するために使用できる回避策があります。

包含型の変数を使用してジェネリック型インスタンスを作成するには、リフレクションと Activator.CreateInstance() を利用できます。

<code class="language-c#">var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);</code>

このコードは次のように機能します:

  1. genericListType 汎用の List<> 型定義を取得します。
  2. MakeGenericType() はジェネリック型定義を取得し、実際の型パラメーター (この場合は double) を指定します。
  3. Activator.CreateInstance() 指定された型パラメーターを使用して、特定のジェネリック型をインスタンス化します。

以上が型変数を使用して C# でジェネリック型をインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。