Mono: checked キーワードを使わずに、オーバーフローチェックを有効にする
以下の記事で、Visual Studio では checked キーワードを使わなくても、ビルド設定でオーバーフローチェックができるとありました。
Mono でも checked キーワードを使わずにオーバーフローチェックができるかどうか調べてみました。コンパイルオプションの checked
で出来ました。
using System; class Program { static int Overflow() { int n = int.MaxValue; return n + 1; } static void Main() { int n = Overflow(); Console.WriteLine(n); } }
実行結果です。
$ mcs checked.cs && mono checked.exe -2147483648 $ mcs -checked+ checked.cs && mono checked.exe Unhandled Exception: System.OverflowException: Number overflow. at Program.Main () [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.OverflowException: Number overflow. at Program.Main () [0x00000] in <filename unknown>:0
オーバーフローチェックが有効になっていますね。