Maison >développement back-end >C++ >Comment puis-je créer des instances de types génériques avec des constructeurs en C# ?
Création d'instances de types génériques à l'aide de constructeurs en C#
En C#, utiliser des constructeurs pour créer de nouveaux objets de types génériques peut être un défi. Considérez le scénario suivant :
<code class="language-csharp">// 创建类型为T的对象列表 public static string GetAllItems<T>() where T : new() { ... List<T> tabListItems = new List<T>(); // 尝试使用构造函数参数向列表添加对象 foreach (ListItem listItem in listCollection) { tabListItems.Add(new T(listItem)); // 错误! } ... }</code>
Lorsque vous essayez de compiler ce code, vous pouvez rencontrer une erreur du compilateur indiquant qu'un argument ne peut pas être fourni lors de la création d'une instance de la variable T. En effet, la contrainte new()
permet uniquement la création d'objets sans paramètres.
Solution : Utiliser la fonction
Pour surmonter cette limitation, vous pouvez fournir un paramètre qui permet de créer l'objet en fonction du paramètre. Une solution pratique consiste à utiliser une fonction :
<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>
Fonction d'appel
Pour utiliser cette fonction, vous l'appelez comme suit :
<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
Cette approche permet de créer de nouveaux objets de type générique avec un constructeur, même au sein d'une fonction générique.
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!