Partager via


Erreur du compilateur CS0460

Mise à jour : novembre 2007

Message d'erreur

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
Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly

Lorsqu'une méthode générique qui fait partie d'une classe dérivée substitue une méthode de la classe de base, vous ne pouvez pas spécifier de contraintes sur la méthode remplacée. La méthode override de la classe dérivée hérite ses contraintes de la méthode contenue dans 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
}