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 :
public class A { public static T Method<T>(T a) where T : new() { //...do something... return new T(); } }
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 :
public class A { public static T Method<T>(T a) where T : new(float[,] u) { //...do something... return new T(new float[0,0]); } }
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 :
public class A { public static void Method<T>(T a, Func<float[,], T> creator) { //...do something... } }
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!