ここでは、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# ではループ回数はループ内の処理でも変更可能のようです。言語仕様としての良し悪しはわかりませんが、明らかな違いです。個人的には、
「 ループ終端値はループ内で書き換えることは可能であることは正しい。しかし、そのようなコードは書くべきではない 」
と、ぼんやりと思いました。深く考え込んだわけではありません。なんとなくです。