タグ

2013年3月29日のブックマーク (1件)

  • キャストとオーバーフロー

    今回はちょっとVB.NETの不満点の一つを。まあここでC#のコードを移植する以外直接書くことはないから大した問題ではないんですけど。 21日の記事だったと思いますが、そのときVB.NETにC#のコードを移植していて気付いたんですが、VB.NETはキャストする際Cなんとか関数(以下、型変換関数)を使用するんですよね(ところでこれはコンパイル時に解決されるから関数と言うよりはマクロかステートメントとでも呼ぶべきかも知れません)。IntegerにキャストするならCInt、2005から追加された符号無し系でもUIntegerにキャストするのにCUInt。 ま、それは構いません。(byte)4とやろうがCByte(4)とやろうが結果が同じなら。 問題は、結果が違いうると言うことです。具体的に言えば、型変換関数にはオーバーフローチェックが入っちゃうんですよね。しかもそれを無視して(型落ちを容認して)強

    キャストとオーバーフロー
    gx9901dx
    gx9901dx 2013/03/29
    オーバーフローチェックさせない方法