CS0075 de erro do compilador

Mensagem de erro

Para converter um valor negativo, é necessário delimitá-lo o valor entre parênteses

Se você estiver lançando usando uma palavra-chave que identifica um tipo predefinido, você não precisa entre parênteses.Caso contrário, você deve colocar os parênteses porque (x) não serão considerados –y uma expressão de conversão.Da especificação da translation from VPE for Csharp seção 7.6.6:

Da regra Desambigüidade segue que, se x e y são identificadores, (y, x) (x)(y), e (x)(-y) são expressões de conversão, mas (x)-y não é mesmo se x identifica um tipo.No entanto, se x for uma palavra-chave que identifica um tipo predefinido (por exemplo, int), todos sistema autônomo quatro formulários são expressões de conversão (porque tal uma palavra-chave não pôde ser possivelmente 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

Referência

Conversão e conversões de tipo (Guia de programação C#)