Kompilatorfel CS0019

Operatorn operator kan inte tillämpas på operander av typen "typ" och "typ"

En binär operator tillämpas på datatyper som inte stöder den. Du kan till exempel inte använda operatorn || på strängar, du kan inte använda +, -, <eller > operatorer på boolvariabler och du kan inte använda operatorn == med en struct typ om inte typen uttryckligen överbelastar operatorn.

Du kan överbelasta en operator så att den stöder operander av vissa typer. Mer information finns i Operatoröverlagring.

Exempel 1

I följande exempel genereras CS0019 på tre platser eftersom bool i C# inte kan konverteras till int. CS0019 genereras också när subtraktionsoperatorn - tillämpas på en sträng. Additionsoperatorn + kan användas med strängoperatorer eftersom operatorn överbelastas av String klassen för att utföra strängsammanfogning.

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
}

Exempel 2

I följande exempel måste villkorsstyrd logik anges utanför ConditionalAttribute. Du kan bara skicka en fördefinierad symbol till ConditionalAttribute.

Följande exempel genererar 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() {}
}

Se även