checked
C# でいつ演算子を使用する必要がありますか?
例外処理にのみ適していますか?
4 に答える
checked
式の (サイレント) オーバーフローを防ぐために使用します。
またunchecked
、無害なオーバーフローが発生する可能性があることがわかっている場合に使用します。
デフォルトの (プロジェクト全体の) コンパイラ設定に依存したくない場所では、両方を使用します。
どちらの形式も非常にまれですが、重要な整数演算を行う場合は、オーバーフローの可能性について考える価値があります。
また、次の 2 つの形式があることにも注意してください。
x = unchecked(x + 1); // ( expression )
unchecked { x = x + 1;} // { statement(s) }
checked
System.OverFlowException
そうでなければ気付かないものを拾うのに役立ちます
int result = checked (1000000 * 10000000);
// Error: operation > overflows at compile time
int result = unchecked (1000000 * 10000000);
// No problems, compiles fine
整数型の算術演算と変換のオーバーフロー チェック コンテキストを制御するには、checked 演算子と unchecked 演算子を使用します。
チェックされたコンテキストでは、式が宛先の型の範囲外の値を生成する場合、結果は式が定数か非定数かによって異なります。定数式はコンパイル時エラーを引き起こしますが、非定数式は実行時に評価され、例外が発生します。
チェックされていないコンテキストでは、式が宛先タイプの範囲外の値を生成する場合、結果は切り捨てられます。
checked
vs.unchecked
は、整数演算を行う場合にも役立ちます。特にインクリメント操作で、 を超えてインクリメントすることを知ってUInt32.MaxValue
いて、無害に にオーバーフローさせたい場合0
。