14

checkedC# でいつ演算子を使用する必要がありますか?
例外処理にのみ適していますか?

4

4 に答える 4

14

checked式の (サイレント) オーバーフローを防ぐために使用します。
またunchecked、無害なオーバーフローが発生する可能性があることがわかっている場合に使用します。

デフォルトの (プロジェクト全体の) コンパイラ設定に依存したくない場所では、両方を使用します。

どちらの形式も非常にまれですが、重要な整数演算を行う場合は、オーバーフローの可能性について考える価値があります。

また、次の 2 つの形式があることにも注意してください。

 x = unchecked(x + 1);    // ( expression )
 unchecked { x = x + 1;}  // { statement(s) }
于 2010-03-02T14:42:38.520 に答える
6

checkedSystem.OverFlowExceptionそうでなければ気付かないものを拾うのに役立ちます

int result = checked (1000000 * 10000000);   
    // Error: operation > overflows at compile time

int result = unchecked (1000000 * 10000000);  
    // No problems, compiles fine
于 2010-03-02T14:43:15.070 に答える
3

チェックされた演算子とチェックされていない演算子から

整数型の算術演算と変換のオーバーフロー チェック コンテキストを制御するには、checked 演算子と unchecked 演算子を使用します。

チェックされたコンテキストでは、式が宛先の型の範囲外の値を生成する場合、結果は式が定数か非定数かによって異なります。定数式はコンパイル時エラーを引き起こしますが、非定数式は実行時に評価され、例外が発生します。

チェックされていないコンテキストでは、式が宛先タイプの範囲外の値を生成する場合、結果は切り捨てられます。

チェックあり、チェックなし

于 2010-03-02T14:39:37.730 に答える
3

checkedvs.uncheckedは、整数演算を行う場合にも役立ちます。特にインクリメント操作で、 を超えてインクリメントすることを知ってUInt32.MaxValueいて、無害に にオーバーフローさせたい場合0

于 2010-03-02T14:52:46.473 に答える