ホームページ > バックエンド開発 > C++ > C# で `new()` 制約を使用して引数をジェネリック コンストラクターに渡すにはどうすればよいですか?

C# で `new()` 制約を使用して引数をジェネリック コンストラクターに渡すにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-22 13:57:11
オリジナル
211 人が閲覧しました

How Can I Pass Arguments to a Generic Constructor in C# Using the `new()` Constraint?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート