La Covariance et ContraVariance permet de faire un casting implicite pour supporter les types dérivés ou ancêtre (1*) lors d'appel de méthodes d'interfaces.
La Covariance et Contravariance s'applique également aux assignation de delegate.
(1*) Ce cas est décrit de façon plus claire dans les exemple du second lien.
Soit les classes suivantes:
- T0 = Actor
- T1 dérivée de T0 = Person
- T2 dérivée de T1 = Employe
la CoVariance implique qu'une fonction Z peut retourner un élément de type T2 (casting implicite).
La contraVaiance indique qu'une fonction Y peut accepter un parametre de type T0 (casting implicite).
Dans les deux cas, si le procédé de CoVariance et ContraVariance n'existait pas, les deux cas décris ci-avant ne compileraient pas (le type alors toléré étant strictement T1).
Je vous invite à consulter les deux articles suivants pour plus d'information.
Aucun commentaire:
Enregistrer un commentaire