Errore del compilatore CS0218

Aggiornamento: novembre 2007

Messaggio di errore

Il tipo 'tipo' deve contenere dichiarazioni di operatore true e operatore false.
The type ('type') must contain declarations of operator true and operator false

Se si definisce un operatore per un tipo definito dall'utente e si tenta poi di utilizzarlo come operatore di corto circuito, è necessario che per tale operatore siano definiti l'operatore true e l'operatore false. Per ulteriori informazioni sugli operatori di corto circuito, vedere Operatore && e Operatore ||.

Il seguente codice di esempio genera l'errore CS0218:

// CS0218.cs
using System;
public class MyClass
{
   // uncomment these operator declarations to resolve this CS0218
   /*
   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 MyClass operator & (MyClass f1, MyClass f2)
   {
      return new MyClass();
   }

   public static void Main()
   {
      MyClass f = new MyClass();
      int i = f && f;   // CS0218, requires operators true and false
   }
}

Vedere anche

Riferimenti

Operatori di conversione (Guida per programmatori C#)