- 開発技術
C#のforとforeachの違い
- C#

はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
業務をしていた時に、EXCELを出力する機能があり、EXCELを出力して内容に誤りがないか確認をしていたところ、2つのEXCELで内容の違いがほとんどないにもかかわらず、セルの書式の違いがありコードを確認しました。すると内容はほとんど同じだがfor文とforeach文で作った違いがあり、そこが影響していました。
そこで、同じようなミスをしないようにするため覚書として記載したいと思います。
for文について
for文は同じような操作を繰り返し行うときに使う文です。
例えば、Listにデータを順番に詰め込んでいくときなどに使います。
1 2 3 4 5 6 |
var ListA = new List<int>(); var ListB = new List<int>() {1,2,3}; for(int i = 0; i < ListB.Count; i++) { ListA.add(ListB[i]); } |
また、特定の条件になるまで無限ループの形を作ることもできます。
1 2 3 4 |
For(;;) { // 処理 } |
foreach文について
使う場面はfor文と同じです。
1 2 3 4 5 6 |
var ListA = new List<int>(); var ListB = new List<int>() {1,2,3}; foreach(int number in ListB) { ListA.add(number); } |
for文とforeach文の違い
for文
・数値のカウンタを自分で制御ができる(3つずつ増やすなど)
・繰り返し回数を指定できる
・配列やリストの要素にインデックス付きでアクセスすることができる
・途中でインデックスを飛ばしたり戻したりできる
foreach文
・コレクションや配列の全要素を順番に処理する
・インデックスを意識せずに要素にアクセスできる
・読み取り専用なので、ループ変数を書き換えてもコレクションには反映されない
・IEnumerableを実装していれば使える
冒頭の原因
はじめにで書いたセルの書式の違い原因はforeach文を使っていたことで、データがあるセルにだけしか書式が反映されていなかったことにあります。
決まった形式のEXCELのデータを設定する際にはfor文の方が適していたと思います。
最後に
for文とforeach文の違いについて説明をしてきました。
似ている構文ですが、使い方を間違えるとエラーの原因にもなるので内容を理解して使うようにしましょう。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>