C# で new()
制約を使用してパラメーターをジェネリック コンストラクターに渡す
リストに要素を追加し、コンストラクター パラメーターを使用して型 T の新しいオブジェクトを作成しようとすると、変数インスタンスの作成時にパラメーターを指定できないことを示すコンパイル エラーが発生する場合があります。このエラーは、クラスにコンストラクター パラメーターがある場合でも発生します。
この問題を解決するには、ジェネリック型の new()
制約を使用する必要があります。この制約によりパラメータなしのインスタンスの作成が可能になりますが、コンストラクタ パラメータが含まれる場合には十分ではありません。
別の方法は、パラメータを導入して、そのパラメータに基づいてオブジェクトが作成されるようにすることです。関数を使用すると、これを効率的に実行できます。
<code class="language-csharp">public static string GetAllItems<T>(..., Func<ListItem, T> del) { ... List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(del(listItem)); } ... }</code>
この関数は、必要なパラメーターを指定して新しいオブジェクトを作成するラムダ式を使用して呼び出すことができます。
<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
以上がC# で `new()` 制約を使用して引数をジェネリック コンストラクターに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。