VB.NET For文で指定した回数だけループで同じ処理を行う
VB.NET
のFor
文で指定した回数だけループで同じ処理を行う方法を紹介します。
回数が固定の場合
ループする回数が固定の場合は以下のように指定します。
以下のように指定した場合はFor
文で囲った処理を5回ループして実行します。
For i As Integer = 1 To 5
Console.WriteLine(i)
Next
'出力結果
'1
'2
'3
'4
'5
For from To to
のようにfrom
とto
に数値を指定して、from
の値が1回処理を行うごとに加算されていきます。
1 To 5
の部分は10 To 15
などと指定しても5回ループすることは変わらないのですが、各ループ処理でX
回目に応じた処理を行いたいということが多いので、from
は1
または0
とすることが一般的です。
配列の要素数だけループする
配列の要素の数だけループしたい場合は以下のようにfrom
を0
、to
を配列の要素数-1
とします。
Dim weeks As String() = {"日", "月", "火", "水", "木", "金", "土"}
For i As Integer = 0 To weeks.Length - 1
Console.WriteLine(weeks[i])
Next
'出力結果
'日
'月
'火
'水
'木
'金
'土
from
を1
から始めれば、to
は配列の要素数
となり、ループの回数の指定はわかりやすくなりますが、配列のインデックスは1
ではなく0
から始まります。
from
を1
から始めてしまうと配列へのアクセスが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
を使用したほうが、配列の要素をループで列挙するということが直感的に伝わりやすいので、積極的に使用していくことをおすすめします。