foreachループ
インデックスなしで反復処理します。
「foreachループ」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
foreachとは
foreachループを使うと、コレクション内のすべての項目を1つずつ処理できます。
インデックスやカウンターを管理する必要はありません。C#がコレクションを順番に処理し、各要素を指定した変数に渡してくれます。
配列やリストのすべての項目を読み取る最も簡潔な方法です。
基本構文
構文は単純で、foreach (var item in collection)の後に本体を続けます。
各回の処理では、itemに次の要素が格納されます。最後の要素を処理すると、ループは自動的に終了します。
foreach (var name in names)
{
Console.WriteLine(name);
}初めてのforeach
文字列の配列をループして、それぞれの名前を出力してみましょう。
インデックスも長さの確認も必要ないことに注目してください。ループがすべての要素を順番に処理してくれます。
string[] names = { "Ada", "Linus", "Grace" };
foreach (var name in names)
{
Console.WriteLine(name);
}ループ変数
ループ変数(ここではn)は、各項目に対して新しく作られるコピーです。
変数名は自由に付けられます。numberやnのように、要素を表す名前を選んでください。
int[] scores = { 90, 75, 88 };
foreach (var n in scores)
{
Console.WriteLine(n);
}varと明示的な型の比較
varの代わりに、要素の型を明示的に書くこともできます。
どちらも同じように動作します。varを使うとコンパイラーが型を推論するため、コードを短くできます。
int[] scores = { 90, 75, 88 };
foreach (int score in scores)
{
Console.WriteLine(score);
}本体で処理を行う
ループ本体では、計算、条件判定、合計の作成など、どのような処理でも実行できます。
ここでは各値を途中の合計に加算し、ループの後で結果を出力しています。
int[] nums = { 4, 8, 15 };
int total = 0;
foreach (var x in nums)
{
total += x;
}
Console.WriteLine(total);条件付きのforeach
ループ内にifを置くと、特定の項目に対してだけ処理を行えます。
この例では、配列から偶数だけを出力します。
int[] nums = { 1, 2, 3, 4, 5, 6 };
foreach (var x in nums)
{
if (x % 2 == 0)
Console.WriteLine(x);
}foreachは読み取り用で、置き換えはできない
ループ変数はループ内で読み取り専用です。再代入してコレクションを変更することはできません。
foreach変数は変更できないため、この行を実行するとコンパイルエラーになります。
foreach (var x in nums)
{
x = x + 1; // ERROR: cannot assign to iteration variable
}文字をループする
文字列は文字の並びなので、文字列に対してもforeachを使えます。
各回の処理で、テキストから1つのcharを取得できます。
string word = "code";
foreach (var c in word)
{
Console.WriteLine(c);
}foreachを使う場面
すべての要素を処理し、インデックスが必要ない場合はforeachを使います。
位置が必要な場合や、ループ中にコレクションを変更したい場合は、forループのほうが適しています。
foreachとforの比較
forループはカウンターを管理し、arr[i]のようなインデックスを使います。
foreachはその仕組みを隠してくれます。各項目を読み取るだけなら、コードが短くなり、1つずれるミスも避けられます。
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}確認問題
foreachループについて学んだことを確認しましょう。
まとめ
foreachを使うと、インデックスなしでコレクションのすべての要素を処理できることを学びました。
ループ変数は各項目の読み取り専用コピーです。簡潔に読み取る場合はforeachを使い、位置が必要な場合や項目を変更したい場合はforを使います。
よくある質問
「foreachループ」レッスンは無料ですか?
はい。「foreachループ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「foreachループ」で何を学びますか?
インデックスなしで反復処理します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「foreachループ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- foreachループ
- コレクションを反復処理する
- breakとcontinue
- 反復処理でよくあるミス