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 boolsche Variablen, und den Operator == können Sie nicht für einen struct-Typ verwenden, es sei denn, der Typ überlädt diesen Operator explizit.

Sie können Operatoren überladen, damit diese Operanden verschiedener Typen unterstützen. Weitere Informationen finden Sie unter Operatorüberladung.

Beispiel 1

In folgendem Beispiel wird der Fehler CS0019 an drei 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...
    }

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

Beispiel 2

Im folgenden Beispiel muss die bedingte Logik außerhalb des ConditionalAttribute angegeben werden. Sie können nur ein vordefiniertes Symbol an das 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() {}
}

Weitere Informationen