Leggere in inglese

Condividi tramite


Errore del compilatore CS0217

Per essere utilizzato come operatore di corto circuito, un operatore logico definito dall'utente ('operator') deve avere lo stesso tipo restituito dei 2 parametri.

Se si definisce un operatore per un tipo definito dall'utente e quindi si prova a usare l'operatore come operatore di corto circuito, l'operatore definito dall'utente deve avere parametri e valori restituiti dello stesso tipo. Per ulteriori informazioni sugli operatori di corto circuito, vedere &&operatore e ||operatore. Per ulteriori informazioni sugli operatori di cortocircuito o condizionali definiti dall'utente, vedere la sezione Operatori logici condizionali definiti dall'utente della specifica del linguaggio C#.

L'esempio seguente genera l'errore 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;  
   }  
}  

Vedi anche