Partager via


Erreur du compilateur CS0217

Mise à jour : novembre 2007

Message d'erreur

Pour être applicable en tant qu'opérateur de court-circuit, un opérateur logique défini par l'utilisateur ('opérateur') doit posséder le même type de retour que le type de ses 2 paramètres.
In order to be applicable as a short circuit operator a user-defined logical operator ('operator') must have the same return type as the type of its 2 parameters.

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 l'opérateur && et l'opérateur ||.

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

Référence

Opérateurs surchargeables (Guide de programmation C#)