Compilerfehler CS0019Compiler Error CS0019

Der Operator 'Operator' kann nicht auf einen Operanden vom Typ 'Typ' und 'Typ' angewendet werden.Operator 'operator' cannot be applied to operands of type 'type' and 'type'

Ein binärer Operator wird auf Datentypen angewendet, die ihn nicht unterstützen.A binary operator is applied to data types that do not support it. 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.For example, you cannot use the || operator on strings, you cannot use + , - , < , or > operators on bool variables, and you cannot use the == operator with a struct type unless the type explicitly overloads that operator.

Wenn Sie eine Fehlermeldung mit einem Klassentyp erhalten, liegt das daran, dass die Klasse den Operator nicht überlädt.If you encounter this error with a class type, it is because the class does not overload the operator. Weitere Informationen finden Sie unter Überladbare Operatoren.For more information, see Overloadable Operators.

BeispielExample

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.In the following example, CS0019 is generated in two places because bool in C# is not convertible to int. CS0019 also is generated when the subtraction operator is applied to a string. Der Additionsoperator (+) kann mit Zeichenfolgenoperanden verwendet werden, da dieser Operator von der String-Klasse überladen wird, um eine Zeichenfolgenverkettung durchzuführen.The addition operator (+) can be used with string operands because that operator is overloaded by the String class to perform string concatenation.

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  
}  

BeispielExample

Im folgenden Beispiel muss die bedingte Logik außerhalb des ConditionalAttribute angegeben werden.In the following example, conditional logic must be specified outside the ConditionalAttribute. Sie können nur ein vordefiniertes Symbol an das ConditionalAttribute übergeben.You can pass only one predefined symbol to the ConditionalAttribute.

Im folgenden Beispiel wird CS0019 generiert:The following sample generates 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() {}  
}  

Siehe auchSee Also

OperatorenOperators
Tabelle für implizite numerische KonvertierungenImplicit Numeric Conversions Table