Maison >développement back-end >C++ >Les méthodes génériques C# peuvent-elles contraindre les paramètres de type à des constructeurs spécifiques ?
Contraintes de constructeur avec spécification de paramètres en C#
En C#, les méthodes génériques permettent d'imposer des contraintes sur les paramètres de type. Par exemple, le code suivant montre une contrainte qui nécessite que le type de paramètre T ait un constructeur sans paramètre :
<code class="language-csharp">public class A { public static T Method<T>(T a) where T : new() { //...do something... return new T(); } }</code>
Cela soulève la question : peut-on affiner les contraintes et spécifier que T doit avoir un constructeur qui accepte un argument float[,] ? Malheureusement, la tentative suivante ne parvient pas à compiler :
<code class="language-csharp">public class A { public static T Method<T>(T a) where T : new(float[,] u) { //...do something... return new T(new float[0,0]); } }</code>
Solution
Comme cette contrainte ne peut pas être utilisée, nous pouvons adopter une solution de contournement et utiliser un délégué pour initialiser un objet de type T :
<code class="language-csharp">public class A { public static void Method<T>(T a, Func<float[,], T> creator) { //...do something... } }</code>
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!