C#のforeachループとは?基本構文とLinkedListを使った実例でわかりやすく解説
C#におけるforeachループは、System.Collections.IEnumerableまたはSystem.Collections.Generic.IEnumerable<T>インターフェースを実装している型のインスタンスに含まれる各要素に対して、指定したステートメント(文)やステートメントブロックを繰り返し実行するための制御構造です。
配列やリスト、LinkedListなどのコレクションを扱う際に、インデックスを意識せずシンプルに記述できるため、C#プログラミングにおいて非常に頻繁に使用されます。
foreachループの基本構文
foreach(要素の型 変数名 in コレクション){
// 各要素に対して実行する処理
}foreachループの使用例
ここでは、LinkedList<int>に格納された複数の整数値を、foreachループを使って順番に取り出して表示する例を見てみましょう。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
LinkedList<int> linkedList = new LinkedList<int>();
linkedList.AddLast(25);
linkedList.AddLast(50);
linkedList.AddLast(100);
linkedList.AddLast(200);
linkedList.AddLast(400);
linkedList.AddLast(500);
linkedList.AddLast(550);
linkedList.AddLast(600);
linkedList.AddLast(800);
linkedList.AddLast(1200);
Console.WriteLine("Count of nodes = " + linkedList.Count);
foreach(int val in linkedList){
Console.WriteLine(val);
}
Console.WriteLine("Does the LinkedList has node 800? "+linkedList.Contains(800));
}
}コードのポイント
AddLast()メソッドでLinkedListの末尾に要素を追加しています。Countプロパティでノード(要素)の総数を取得できます。- foreachループでは、変数
valに各要素が先頭から順に代入され、ブロック内の処理が繰り返し実行されます。 Contains()メソッドを使用すると、指定した値がコレクション内に存在するかどうかを確認できます。
実行結果
上記のコードを実行すると、以下のような出力が得られます。
Count of nodes = 10 25 50 100 200 400 500 550 600 800 1200 Does the LinkedList has node 800? True
まとめ
foreachループを使えば、コレクション内の全要素を簡潔なコードで順番に処理できます。forループのようにカウンター変数や終了条件を管理する必要がないため、コードの可読性が向上し、バグも発生しにくくなります。IEnumerable系インターフェースを実装したあらゆるコレクションで利用できるので、ぜひ活用してみてください。
-
C#のLinkedList(連結リスト)の基本と使い方を解説
C#のLinkedList<T>とはC#では、System.Collections.Generic名前空間に用意されているLinkedList<T>クラスを使用することで、連結リスト(リンクリスト)を簡単に扱うことができます。LinkedList<T>の最大の特徴は、リスト内への要素の挿入と削除を高速に行える点です。配列ベースのコレクションと異なり、要素の追加・削除時に他の要素を移動させる必要がないため、データの入れ替えが頻繁に発生する場面で特に有効です。LinkedList<T>の主な特徴要素の挿入・削除が高速に行える重複した要素を格納できるS
-
C#でLinkedListを走査する方法 ― 宣言からトラバーサルまで
C#では、System.Collections.Generic名前空間に含まれるLinkedListコレクションを使用することで、連結リストを簡単に扱うことができます。まずはLinkedListを宣言する方法から見ていきましょう。var a = new LinkedList<string>();次に、AddLastメソッドを使ってリストの末尾に要素を追加します。a.AddLast(Tim); a.AddLast(Tom);LinkedListの走査(トラバーサル)は、foreachループを使うことで非常にシンプルに実現できます。以下に完全なサンプルコードを示します。サンプルコードu