Compartir a través de


Error del compilador CS0217

Actualización: noviembre 2007

Mensaje de error

Para que se pueda aplicar un operador de cortocircuito, el operador lógico definido por el usuario ('operador') debe tener el mismo tipo de valor devuelto que sus dos parámetros.
In order to be applicable as a short circuit operator a user-defined logical operator ('operator') must have the same return type as the type of its 2 parameters.

Si se define un operador para un tipo definido por el usuario y a continuación se intenta utilizarlo como 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 acerca de los operadores de cortocircuito, vea Operador && y Operador ||.

El código siguiente genera el error 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;
   }
}

Vea también

Referencia

Operadores sobrecargables (Guía de programación de C#)