MSDN 示例只是编译时错误。
只是我看到@JonSkeet 在这里使用了它的答案:https://stackoverflow.com/a/263416/360211我不明白为什么它只是编译时间。
static void Main()
{
const int x = 4;
int y = int.MaxValue;
int z = x*y;
Console.WriteLine(z);
Console.ReadLine();
}
产生-4
,与此相同:
static void Main()
{
unchecked
{
const int x = 4;
const int y = int.MaxValue;
int z = x*y; // without unchecked, this is compile error
Console.WriteLine(z);
Console.ReadLine();
}
}
这会引发运行时:
static void Main()
{
checked
{
const int x = 4;
int y = int.MaxValue;
int z = x*y; //run time error, can checked be set system wide?
Console.WriteLine(z);
Console.ReadLine();
}
}
那么 Jon 这样做是因为它可以设置系统范围、编译器标志或其他方式吗?