Ошибка компилятора CS0019

Оператор "оператор" не может применяться к операнду типа "тип" и "тип"

Бинарный оператор применяется к типам данных, которые не поддерживают его. Например, нельзя использовать || оператор в строках, нельзя использовать <-+оператор , или > операторы в логических переменных, и нельзя использовать == оператор с типомstruct, если только тип явно не перегружает этот оператор.

Можно перегрузить оператор, чтобы обеспечить поддержку операндов определенных типов. Для получения дополнительной информации см. раздел Перегрузка операторов.

Пример 1

В следующем примере CS0019 создается в трех местах, так как bool в C# не преобразуется в int. CS0019 также создается при применении оператора - вычитания к строке. Оператор сложения + можно использовать со строковыми операндами, поскольку он перегружен в классе String, где реализует объединение строк.

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
}

Пример 2

В следующем примере условная логика должна задаваться вне ConditionalAttribute. В ConditionalAttribute можно передать только один предварительно определенный символ.

В следующем примере возникает ошибка 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() {}
}

См. также