[ VB.NET / C# ] For文の言語仕様の違い ( ループ回数の確定タイミング )

Pocket

ここでは、C# と VB.NET における For 文の言語仕様の違いを備忘録がてら掲載しています。

スポンサーリンク

ループ回数の確定タイミングが異なる

VB.NET と C# とでは、For 文のループ回数の確定タイミングが異なっているようです。以下が比較したサンプルコードです。

VB.NET

    Dim count As Integer = 5
    For i As Integer = 0 To count
        If (i = 2) Then
            count = 3
        End If
        Console.WriteLine(i)
    Next

' 出力結果
' 0
' 1
' 2
' 3
' 4
' 5

C#

    int count = 5;
    for(int i=0;i<=count;i++) {
        if (i == 2)
        {
            count=3;
        }
        Console.WriteLine(i);
    }
// 出力結果
// 0
// 1
// 2
// 3

動作確認は Visual Studio2008 で行いました。VB.NET では、For 文の最初でループ回数が確定しているようですが、C# ではループ回数はループ内の処理でも変更可能のようです。言語仕様としての良し悪しはわかりませんが、明らかな違いです。個人的には、

「 ループ終端値はループ内で書き換えることは可能であることは正しい。しかし、そのようなコードは書くべきではない 」

と、ぼんやりと思いました。深く考え込んだわけではありません。なんとなくです。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *