Voici une explication plus détaillée de dont je perlais :
deuxième point, voici un exemple :
voici ce que l'on doit écrire si l'on souhaite instancier et remplir une liste générique :
1 2 3 4 5 6
|
public class GenericClass<U,T> where U : List<T>, new() where T : new()
{
U MyList = new U();
T Element = new T();
} |
Hors le type paramètre T n'est pas nécessaire, puisqu'il est déjà contenu dans U. J'amerais pouvoir m'en passer dans la définition de ma classe. Il faudrait alors un moyen dans ma méthode de dire : je veux le type paramètre de U (T), pour pouvoir l'instancier.
Pour le Troisième point, ton article explique bien le problème. L'auteur explique qu'il n'exclut pas la possibilité que la convariance soit implémentée dans une future version de C#. Même si ce n'est pas 'type safe', je trouverait bien pratique de laisser ou non la possibilité de l'utiliser. Qu'en penses-tu ? Je trouve que c'est un bon sujet de débat : vaut-il mieux empêcher ce genre de chose pour ne pas risquer d'avoir d'erreur à l'exécution ou laisser la possibilité de l'utiliser ou non... ?
Pour le quatrième point voici un exemple :
1 2 3 4 5
|
public void Method<V,W>(V p1)
{
} |
V peut être déduit du type de p1, mais pas W. Dans ce cas on doit préciser les 2 types paramètres alors qu'on pourrait simplement appeler la méthode comme cela :
Method<,MontTypeW>(monParametreDeTypeV)
Bon je l'accorde, ce n'est pas une grosse contrainte...
Partager