Lire en anglais

Partager via


Erreur du compilateur CS0460

Les contraintes pour les méthodes d'implémentation d'interface override et explicite sont héritées de la méthode de base et ne peuvent donc pas être spécifiées directement

Quand une méthode générique qui fait partie d’une classe dérivée remplace une méthode dans la classe de base, vous ne pouvez pas spécifier de contraintes sur la méthode remplacée. La méthode de substitution dans la classe dérivée hérite ses contraintes de la méthode de la classe de base.

Exemple

L’exemple suivant génère l’erreur CS0460.

// CS0460.cs  
// compile with: /target:library  
class BaseClass
{  
   BaseClass() { }  
}  
  
interface I  
{  
   void F1<T>() where T : BaseClass;  
   void F2<T>() where T : struct;  
   void F3<T>() where T : BaseClass;  
}  
  
class ExpImpl : I  
{  
   void I.F1<T>() where T : BaseClass {}   // CS0460  
   void I.F2<T>() where T : class {}  // CS0460  
}