Compilerfehler CS0019

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

Ein binärer Operator wird auf Datentypen angewendet, die ihn nicht unterstützen. Sie können z.B. nicht den Operator || für Zeichenfolgen verwenden genauso wenig wie die Operatoren +, -, < oder > für bool-Variablen und den Operator == für einen struct-Typ, es sei denn, der Typ überlädt diesen Operator explizit.

Wenn Sie eine Fehlermeldung mit einem Klassentyp erhalten, liegt das daran, dass die Klasse den Operator nicht überlädt. Weitere Informationen finden Sie unter Überladbare Operatoren.

Beispiel

In folgendem Beispiel wird der Fehler CS0019 an zwei Stellen erzeugt, weil bool in C# nicht in int konvertiert werden kann. CS0019 wird auch erzeugt, wenn der Substraktionsoperator auf eine Zeichenfolge angewendet wird. Der Additionsoperator (+) kann mit Zeichenfolgenoperanden verwendet werden, da dieser Operator von der String-Klasse überladen wird, um eine Zeichenfolgenverkettung durchzuführen.

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 die bedingte Logik außerhalb des <xref:System.Diagnostics.ConditionalAttribute> angegeben werden. Sie können nur ein vordefiniertes Symbol an das <xref:System.Diagnostics.ConditionalAttribute> übergeben.

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