更新 : 2007 年 11 月
エラー メッセージ
負の値をキャストするには、値をかっこで囲んでください。
定義済みの型を指定するキーワードを使ってキャストしている場合、かっこは不要です。それ以外の場合は、かっこを指定する必要があります。(x) –y はキャスト式とは見なされません。以降、C# 仕様のセクション 7.6.6 からの抜粋です。
あいまいさを排除するという観点から、x と y が識別子の場合、(x)y、(x)(y)、および (x)(-y) はキャスト式と見なされますが、(x)-y は x で型が指定されていたとしてもキャスト式とは見なされません。ただし、x が定義済みの型 (int など) を示すキーワードである場合は、このようなキーワードがそれ自体で式になることはないため、4 つの形式はいずれもキャスト式と見なされます。
次のコードでは、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
}
}
}