Freigeben über


Compilerfehler CS0075

Negative Werte müssen in runde Klammern gesetzt werden, um umgewandelt zu werden.

Wenn Sie eine Umwandlung über ein Schlüsselwort vornehmen, das einen vordefinierten Typ angibt, benötigen Sie keine Klammern. Andernfalls müssen Sie die Klammern setzen, weil (x) – y nicht als Umwandlungsausdruck angesehen wird. Aus der C#-Spezifikation, Abschnitt 7.6.6:

Aus der Regel zur Sicherstellung der Eindeutigkeit folgt, dass, wenn x und y Bezeichner sind, (x)y, (x)(y) und (x)(-y) Typumwandlungsausdrücke sind, (x)-y jedoch kein Typumwandlungsausdruck ist, auch wenn x einen Typ bezeichnet. Wenn jedoch x ein Schlüsselwort ist, das einen vordefinierten Typ bezeichnet (z. B. int), handelt es sich bei allen vier Formen um Typumwandlungsausdrücke (weil ein solches Schlüsselwort an sich keinen Ausdruck bilden kann).

Mit dem folgenden Code wird CS0075 generiert:

// 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  
        }  
    }  
}  

Siehe auch