操作でオーバーフロー例外を強制的にスローする方法について読んでいますが、「自分で試してください」セクションで、本とは別の場所にありました。checked
キーワードの根底にあるメカニズムがよくわからないので、どちらかのスポットに関連するパフォーマンスの問題があるかどうか興味があります.
この本の例では階乗を行っていましたが、符号なし long であってもすぐにオーバーフローがスローされます。これは私が思いついたコードです:
static long Factorial (long number) {
long result = 1;
for (int i = 2; i <= number; i++) {
checked {
result *= i;
}
}
return result;
}
しかし、本の裏にある回答ページを見ると、とchecked
を含む関数の本体全体が で囲まれていました。明らかに、それらの場所で必要になることは決してないので、どちらかといえば、ループを でラップするだけです。return
long result = 1;
for
check
ループ内に存在すると、基になる CLR コードが繰り返し生成されますか? (for ループに入る前に変数を宣言する理由のように。) または、ループ内に変数を持っているオーバーヘッドはありませんか?