ホームページ >バックエンド開発 >C++ >C# でパラメーター化されたコンストラクターを使用して汎用オブジェクトをインスタンス化するにはどうすればよいですか?

C# でパラメーター化されたコンストラクターを使用して汎用オブジェクトをインスタンス化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-09 12:07:43799ブラウズ

How Can I Instantiate Generic Objects with Parameterized Constructors in C#?

C# のパラメーター化されたコンストラクターを使用した汎用オブジェクトのインスタンス化

C# では、パラメーター化されたコンストラクターを使用してジェネリック型のインスタンスを作成できます。ただし、提供されているコード例では、基本クラスにパラメーターのない新しいコンストラクター メソッドが提供されていますが、これは現実のシナリオでは必ずしも実用的であるとは限りません。

この問題を解決するための 1 つの解決策は、Activator クラスを使用することです。次のコード スニペットは、このアプローチを示しています。

<code class="language-C#">return (T)Activator.CreateInstance(typeof(T), new object[] { weight });</code>

このコードは、Activator.CreateInstance メソッドを使用して、新しい T 型オブジェクトをインスタンス化します。 typeof(T) 式は、ジェネリック型の Type オブジェクトを返します。コンストラクターは、必要なパラメーターをオブジェクトの配列として渡すことによって呼び出されます。

ジェネリック型の new() 制約は、コンパイラーがコンパイル時にパラメーターのないパブリック コンストラクターの存在を確認するためにのみ使用されることに注意することが重要です。インスタンス作成の実際のメカニズムは依然として Activator クラスです。

ただし、Activator クラスに依存すると、ある程度のコード臭が生じる可能性があることを考慮する価値があり、現在のバージョンの C# ではそのような要件を回避することが一般的に推奨されます。

以上がC# でパラメーター化されたコンストラクターを使用して汎用オブジェクトをインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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