Maison > développement back-end > C++ > Comment puis-je transmettre des arguments à un constructeur générique en C# à l'aide de la contrainte « new() » ?

Comment puis-je transmettre des arguments à un constructeur générique en C# à l'aide de la contrainte « new() » ?

Mary-Kate Olsen
Libérer: 2025-01-22 13:57:11
original
211 Les gens l'ont consulté

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

Utiliser les contraintes new() en C# pour transmettre des paramètres aux constructeurs génériques

Lorsque vous ajoutez des éléments à une liste, en essayant de créer un nouvel objet de type T avec des paramètres de constructeur, vous pouvez rencontrer une erreur de compilation indiquant que les paramètres ne peuvent pas être fournis lors de la création d'une instance de variable. Cette erreur se produit même s'il existe des paramètres de constructeur dans la classe.

Pour résoudre ce problème, new() des contraintes de types génériques doivent être utilisées. Bien que cette contrainte permette la création d'instances sans paramètres, elle n'est pas suffisante dans le cas où les paramètres du constructeur sont inclus.

L'alternative est d'introduire un paramètre pour que l'objet soit créé en fonction du paramètre. Les fonctions peuvent accomplir cela efficacement.

<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>
Copier après la connexion

Cette fonction peut être appelée à l'aide d'une expression lambda qui crée un nouvel objet avec les paramètres requis :

<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal