zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET For文で指定した回数だけループで同じ処理を行う

VB.NETFor文で指定した回数だけループで同じ処理を行う方法を紹介します。

回数が固定の場合

ループする回数が固定の場合は以下のように指定します。

以下のように指定した場合はFor文で囲った処理を5回ループして実行します。

For i As Integer = 1 To 5
  Console.WriteLine(i)
Next

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

For from To toのようにfromtoに数値を指定して、fromの値が1回処理を行うごとに加算されていきます。

1 To 5の部分は10 To 15などと指定しても5回ループすることは変わらないのですが、各ループ処理でX回目に応じた処理を行いたいということが多いので、from1または0とすることが一般的です。

配列の要素数だけループする

配列の要素の数だけループしたい場合は以下のようにfrom0to配列の要素数-1とします。

Dim weeks As String() = {"日", "月", "火", "水", "木", "金", "土"}
For i As Integer = 0 To weeks.Length - 1
  Console.WriteLine(weeks[i])
Next

'出力結果
'日
'月
'火
'水
'木
'金
'土

from1から始めれば、to配列の要素数となり、ループの回数の指定はわかりやすくなりますが、配列のインデックスは1ではなく0から始まります。

from1から始めてしまうと配列へのアクセスがfrom-1となってしまい、ループ内の処理が複雑になってしまいます。

なので、配列にアクセスするときのFor文ではfromは基本的には0を指定します。

ForEachでループする

上記の配列のループのように、For文ではループの数値と配列のインデックスの数値で処理が複雑になってしまいがちです。

ForEachを使用すればループのインデックスを気にすることなく、配列の要素をループさせることができます。

Dim weeks As String() = {"日", "月", "火", "水", "木", "金", "土"}
ForEach week As String In weeks
  Console.WriteLine(week)
Next

'出力結果
'日
'月
'火
'水
'木
'金
'土

In 配列で、ループさせたい配列を指定し、配列の要素が1回のループ毎に変数名 As 型にセットされます。

上記例ではString型の配列なので配列の要素1つ1つはString型になるので、変数名 As Stringとしています。

セットされた変数名をループ処理内で使用できます。

ForEachを使用したほうが、配列の要素をループで列挙するということが直感的に伝わりやすいので、積極的に使用していくことをおすすめします。


関連記事