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