Erro do compilador CS0075

Para lançar um valor negativo, você deve colocar o valor entre parênteses

Se você estiver transmitindo usando uma palavra-chave que identifica um tipo predefinido, então você não precisa de parênteses. Caso contrário, você deve colocar os parênteses porque (x) –y não será considerado uma expressão de elenco. Da especificação C#, Seção 7.6.6:

Da regra de desambiguação segue-se que, se x e y são identificadores, (x)y, (x)(y) e (x)(-y) são expressões de elenco, mas (x)-y não é, mesmo que x identifique um tipo. No entanto, se x é uma palavra-chave que identifica um tipo predefinido (como int), então todas as quatro formas são expressões de elenco (porque tal palavra-chave não poderia ser uma expressão por si só).

O código a seguir gera 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  
        }  
    }  
}  

Consulte também