Číst v angličtině

Sdílet prostřednictvím


Chyba kompilátoru CS0075

Pokud chcete přetypovat zápornou hodnotu, musíte ji uzavřít do závorek.

Pokud přetypujete pomocí klíčového slova, které identifikuje předdefinovaný typ, nepotřebujete závorky. Jinak je nutné vložit závorky, protože (x) –y se nepovažuje za výraz přetypování. Ve specifikaci jazyka C# oddíl 7.6.6:

Z pravidla nejednoznačnosti následuje, že pokud x a y jsou identifikátory, (x)y, (x)(y) a (x)(-y) jsou výrazy přetypování, ale (x)-y nejsou, i když x identifikuje typ. Pokud je ale x klíčovým slovem, které identifikuje předdefinovaný typ (například int), pak jsou všechny čtyři formuláře přetypované výrazy (protože takové klíčové slovo pravděpodobně nemůže být výraz sám).

Následující kód vygeneruje 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  
        }  
    }  
}  

Viz také