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
}
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: