« [MEMO] ファンクションポイントの算出法、あれこれ | トップページ | [VS11] vNext への道 ~ Windows 8 と Visual Studio 11 リリース日程を推測してみる »

2011年10月14日 (金)

[VB] For i = 0 To i < 100

魔界の仮面弁士さんの呟きより。
20111014_vb_for

@Benshi_Orator: コードレビューなう。『For i = 0 To i < 100』って何ぞ。それじゃあ、必ず1回(あるいは0回)しか実行されないよー。 [http://twitter.com/Benshi_Orator/statuses/124358187368460288]

ぬぁっ!? Option Strict Off (既定値) だと、 コンパイル通るんだ!!
ほんと、 落とし穴満載の言語だなw

Sub Main()
    Dim i As Integer = 100
    For i = 0 To i < 100
        Call Console.WriteLine("i = {0}", i)
    Next
    '出力:
    'i = 0

    Call Console.ReadKey()
End Sub

何度も言うけど、 C# や F# より VB の方が、 こういった落とし穴をたくさん理解しなきゃいけないぶんだけ難しい
※ たとえば、 Nothing は null じゃないという話は以前に書いた

ちなみに、 上のコード例で 1回だけ "i = 0" が出力されたということは、 ループ変数 i が初期化される (0 が代入される) よりも前に、 右側の i < 100 が評価されたということ。
i の宣言行を
    Dim i As Integer = 0
に変えると、 ループは 1回も実行されない。

|

« [MEMO] ファンクションポイントの算出法、あれこれ | トップページ | [VS11] vNext への道 ~ Windows 8 と Visual Studio 11 リリース日程を推測してみる »

プログラミング」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [VB] For i = 0 To i < 100:

« [MEMO] ファンクションポイントの算出法、あれこれ | トップページ | [VS11] vNext への道 ~ Windows 8 と Visual Studio 11 リリース日程を推測してみる »