C#のforとforeachの違い

この記事を書いたチーム:frontier

 

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

業務をしていた時に、EXCELを出力する機能があり、EXCELを出力して内容に誤りがないか確認をしていたところ、2つのEXCELで内容の違いがほとんどないにもかかわらず、セルの書式の違いがありコードを確認しました。すると内容はほとんど同じだがfor文とforeach文で作った違いがあり、そこが影響していました。
そこで、同じようなミスをしないようにするため覚書として記載したいと思います。

 

for文について

for文は同じような操作を繰り返し行うときに使う文です。
例えば、Listにデータを順番に詰め込んでいくときなどに使います。

また、特定の条件になるまで無限ループの形を作ることもできます。

 

foreach文について

使う場面はfor文と同じです。

 

for文とforeach文の違い

for
・数値のカウンタを自分で制御ができる(3つずつ増やすなど)
・繰り返し回数を指定できる
・配列やリストの要素にインデックス付きでアクセスすることができる
・途中でインデックスを飛ばしたり戻したりできる

foreach
・コレクションや配列の全要素を順番に処理する
・インデックスを意識せずに要素にアクセスできる
・読み取り専用なので、ループ変数を書き換えてもコレクションには反映されない
IEnumerableを実装していれば使える

 

冒頭の原因

はじめにで書いたセルの書式の違い原因はforeach文を使っていたことで、データがあるセルにだけしか書式が反映されていなかったことにあります。
決まった形式のEXCELのデータを設定する際にはfor文の方が適していたと思います。

 

最後に

for文とforeach文の違いについて説明をしてきました。
似ている構文ですが、使い方を間違えるとエラーの原因にもなるので内容を理解して使うようにしましょう。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス