Leer en inglés

Compartir a través de


Error del compilador CS0217

Para que se pueda aplicar un operador de cortocircuito, un operador lógico definido por el usuario ('operator') debe tener el mismo tipo de valor devuelto que sus dos parámetros.

Si define un operador para un tipo definido por el usuario y, luego, intenta usarlo como un operador de cortocircuito, el operador definido por el usuario debe tener parámetros y valores devueltos del mismo tipo. Para obtener más información sobre los operadores de cortocircuito, consulte el operador && y el operador ||. Para obtener más información sobre los operadores de cortocircuito o condicionales definidos por el usuario, consulte la sección Operadores lógicos condicionales definidos por el usuario de la Especificación del lenguaje C#.

El ejemplo siguiente genera la advertencia 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 también