Прочитать на английском

Поделиться через


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

Для приведения отрицательного значения следует заключить значение в круглые скобки

Если выполняется приведение с помощью ключевого слова, идентифицирующего предопределенный тип, то скобки не требуются. В противном случае необходимо использовать скобки, так как (x) –y не будет считаться выражением приведения. Из спецификации C#, раздел 7.6.6:

Из правила устранения неоднозначности следует, что если x и y являются идентификаторами, (x)y (x)(y) и (x)(-y) являются выражениями приведения, но (x) –y — нет, даже если x обозначает тип. Однако если x является ключевым словом, идентифицирующим предопределенный тип (например int), все четыре формы являются выражениями приведения (поскольку такое ключевое слово не может быть выражением само по себе).

Следующий код приводит к возникновению ошибки CS0075:

// CS0075  
namespace MyNamespace  
{  
    enum MyEnum { }  
    public class MyClass  
    {  
        public static void Main()  
        {  
            // To fix the error, place the negative  
            // values below in parentheses  
            int i = (System.Int32) - 4; //CS0075  
            MyEnum e = (MyEnum) - 1;    //CS0075  
            System.Console.WriteLine(i); //to avoid warning  
            System.Console.WriteLine(e); //to avoid warning  
        }  
    }  
}  

См. также