Compiler Error CS0019

Der Operator "Operator" kann nicht auf Operanden vom Typ "Typ" und "Typ" angewendet werden.

Ein binärer Operator wird auf Datentypen angewendet, die diesen nicht unterstützen. Beispielsweise können Sie den Operator || für Zeichenfolgen, können Sie nicht verwenden +, -, < oder >-Operatoren auf bool-Variablen verwenden, und Sie können den Operator == mit einem Typ struct nicht verwenden, außer wenn die Überladungen des Typs explizit, der Operator.

Wenn dieser Fehler mit einem Klassentyp auftritt, liegt die Ursache darin, dass der Operator von der Klasse nicht überladen wird. Weitere Informationen finden Sie unter Überladbare Operatoren.

Beispiel

Im folgenden Beispiel wird CS0019 an zwei Stellen generiert, da bool in C# nicht in int konvertiert werden kann. CS0019 wird auch generiert, wenn der Subtraktionsoperator auf eine Zeichenfolge angewendet wird. Der Additionsoperator (+) kann mit Zeichenfolgenoperanden verwendet werden, da dieser Operator zur Ausführung von Zeichenfolgenverkettungen mit der String-Klasse überladen wird.

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...  
    }  

    // The following use of == causes no error. It is the comparison of  
    // an integer and a boolean value that causes the error in the   
    // previous if statement.  
    if (result == true)  
    {  
        //Do something...  
    }  

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

Beispiel

Im folgenden Beispiel muss bedingte Logik außerhalb des ConditionalAttribute angegeben werden. An das ConditionalAttribute kann nur ein vordefiniertes Symbol übergeben werden.

Im folgenden Beispiel wird CS0019 generiert.

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

Siehe auch

Operatoren
Tabelle für implizite numerische Konvertierungen