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はこれを行っているのは、システム全体、コンパイラフラグ、またはその他の方法で設定できるからですか?