Lire en anglais

Partager via


Erreur du compilateur CS0217

Pour être applicable en tant qu’opérateur de court-circuit, un opérateur logique défini par l’utilisateur ('operator') doit posséder le même type de retour que le type de ses 2 paramètres.

Si vous définissez un opérateur pour un type défini par l’utilisateur, et essayez d’utiliser l’opérateur comme opérateur de court-circuit, l’opérateur défini par l’utilisateur doit avoir des paramètres et des valeurs de retour du même type. Pour plus d’informations sur les opérateurs de court-circuit, consultez opérateur && et opérateur ||. Pour plus d’informations sur le court-circuit défini par l’utilisateur ou les opérateurs conditionnels, consultez la section Opérateurs logiques conditionnels définis par l’utilisateur de la spécification du langage C#.

L’exemple suivant génère l’erreur CS0217 :

// CS0217.cs  
using System;  
  
public class MyClass  
{  
   public static bool operator true (MyClass f)  
   {  
      return false;  
   }  
  
   public static bool operator false (MyClass f)  
   {  
      return false;  
   }  
  
   public static implicit operator int(MyClass x)  
   {  
      return 0;  
   }  
  
   public static int operator & (MyClass f1, MyClass f2)   // CS0217  
   // try the following line instead  
   // public static MyClass operator & (MyClass f1, MyClass f2)  
   {  
      return new MyClass();  
   }  
  
   public static void Main()  
   {  
      MyClass f = new MyClass();  
      int i = f && f;  
   }  
}  

Voir aussi