Błąd kompilatora CS0075
Aby rzutować wartość ujemną, należy ująć wartość w nawiasy
Jeśli rzutujesz przy użyciu słowa kluczowego identyfikującego wstępnie zdefiniowany typ, nie potrzebujesz nawiasów. W przeciwnym razie należy umieścić nawiasy, ponieważ (x) –y nie zostanie uznane za wyrażenie rzutowane. Z poziomu specyfikacji języka C#, sekcja 7.6.6:
Z reguły uściślania wynika, że jeśli x i y są identyfikatorami, (x)y, (x)(y) i (x)(-y) są wyrażenia-rzutowania, ale (x)-y nie jest, nawet jeśli x identyfikuje typ. Jeśli jednak x jest słowem kluczowym identyfikującym wstępnie zdefiniowany typ (taki jak int), wszystkie cztery formularze są wyrażeniami rzutowanymi (ponieważ takie słowo kluczowe nie może być wyrażeniem samym w sobie).
Poniższy kod generuje 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
}
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: