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() {}
}