Error del compilador CS0019

El operador 'operator' no se puede aplicar en operandos del tipo 'type' y 'type'

Se aplica un operador binario a los tipos de datos que no lo admiten. Por ejemplo, no se puede usar el operador || en cadenas, no se pueden usar los operadores +, -, <, o > en variables bool y no se puede usar el operador == con un tipo struct salvo que el tipo sobrecargue explícitamente a ese operador.

Puede sobrecargar un operador para hacer que sea compatible con operandos de determinados tipos. Para obtener más información, vea Sobrecarga de operadores.

Ejemplo 1

En el ejemplo siguiente, CS0019 se genera en tres lugares porque bool en C# no puede convertirse en int. CS0019 también se genera cuando el operador de resta - se aplica a una cadena. El operador de suma + puede usarse con operandos de cadena porque ese operador está sobrecargado mediante la clase String para realizar la concatenación de cadenas.

static void Main()
{
    bool result = true;
    if (result > 0) //CS0019
    {
        // Do something.
    }

    int i = 1;
    // You cannot compare an integer and a boolean value.
    if (i == true) //CS0019
    {
        //Do something...
    }

    string s = "Just try to subtract me.";
    float f = 100 - s; // CS0019
}

Ejemplo 2

En el ejemplo siguiente, la lógica condicional debe especificarse fuera de ConditionalAttribute. Solo puede pasar un símbolo predefinido a ConditionalAttribute.

En el ejemplo siguiente se genera el error CS0019:

// CS0019_a.cs
// compile with: /target:library
using System.Diagnostics;

public class MyClass
{
   [ConditionalAttribute("DEBUG" || "TRACE")]   // CS0019
   public void TestMethod() {}

   // OK
   [ConditionalAttribute("DEBUG"), ConditionalAttribute("TRACE")]
   public void TestMethod2() {}
}

Vea también