CS0217 de erro do compilador

Mensagem de erro

Para ser aplicado sistema autônomo um operador de curto circuito um operador lógico definido pelo usuário ('operador') deve ter o mesmo tipo de retorno sistema autônomo o tipo de seus 2 parâmetros.

Se você definir um operador para um tipo definido pelo usuário e, em seguida, tente usar o operador sistema autônomo um operador de circuito curto, 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 circuito curto, consulte &&Operador and || Operador.

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

Referência

Operadores que pode ser sobrecarregado é (Guia de programação C#)