Error del compilador CS0075
Actualización: noviembre 2007
Mensaje de error
Para convertir un valor negativo, el valor debe ir entre paréntesis
To cast a negative value, you must enclose the value in parentheses
Si la conversión se efectúa mediante una palabra clave que identifica un tipo predefinido, los paréntesis no son necesarios. De lo contrario, debe colocar los paréntesis porque (x) –y no se considerará una expresión de conversión. De la especificación de C#, sección 7.6.6:
De la regla de anulación de ambigüedades se deduce que, si x e y son identificadores, (x)y, (x)(y) y (x)(-y) son expresiones de conversión, pero (x)-y no lo es, aunque x identifique un tipo. No obstante, si x es una palabra clave que identifica un tipo predefinido (como int), las cuatro formas son expresiones de conversión de tipos (porque esta palabra clave nunca podría ser una expresión por sí misma).
El código siguiente genera el error 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
}
}
}