Ler em inglês

Partilhar via


Erro do compilador CS0217

Para ser aplicável como operador de curto-circuito, um operador lógico definido pelo utilizador («operador») deve ter o mesmo tipo de retorno que o tipo dos seus 2 parâmetros.

Se você definir um operador para um tipo definido pelo usuário e, em seguida, tentar usar o operador como um operador de curto-circuito, o operador definido pelo usuário deve ter parâmetros e valores de retorno do mesmo tipo. Para obter mais informações sobre operadores de curto-circuito, consulte && operador e || operador. Para obter mais informações sobre operadores de curto-circuito ou condicionais definidos pelo usuário, consulte a seção Operadores lógicos condicionais definidos pelo usuário da especificação da linguagem C#.

O exemplo a seguir gera 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;  
   }  
}  

Consulte também