C#の配列でforeachループを使う方法!要素の表示・検索・比較をサンプルコードで解説
C#では、foreachループを使うことで、配列の各要素へインデックスを意識せずにシンプルにアクセスできます。for文のような初期化・条件式・インクリメントの記述が不要なため、コードが読みやすくなるのが大きなメリットです。
この記事では、文字列配列をforeachループで反復処理する基本から、Array.Existsメソッドによる要素の検索、Equalsメソッドによる配列の比較まで、具体的なサンプルコードと実行結果をもとに解説します。
例1:foreachループで配列の全要素を表示する
まずは基本となる例です。商品カテゴリを格納した文字列配列を作成し、foreachループですべての要素をコンソールに出力します。あわせて、Array.Existsメソッドとラムダ式を組み合わせて「特定の要素が存在するか」「指定した文字で始まる要素があるか」を判定し、IsFixedSizeプロパティで配列が固定サイズかどうかも確認しています。
using System;
public class Demo {
public static void Main() {
string[] products = new string[] { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };
Console.WriteLine("商品リスト...");
foreach(string s in products) {
Console.WriteLine(s);
}
Console.WriteLine("配列にAccessoriesは存在するか? = {0}", Array.Exists(products, ele => ele == "Accessories"));
Console.WriteLine("配列にStationeryは存在するか? = {0}", Array.Exists(products, ele => ele == "Stationery"));
Console.WriteLine("\n「C」で始まる商品は1つ以上あるか? = {0}", Array.Exists(products, ele => ele.StartsWith("C")));
Console.WriteLine("「D」で始まる商品は1つ以上あるか? = {0}", Array.Exists(products, ele => ele.StartsWith("D")));
Console.WriteLine("「T」で始まる商品は1つ以上あるか? = {0}", Array.Exists(products, ele => ele.StartsWith("T")));
Console.WriteLine("「E」で始まる商品は1つ以上あるか? = {0}", Array.Exists(products, ele => ele.StartsWith("E")));
Console.WriteLine("配列は固定サイズか? = " + products.IsFixedSize);
}
}
実行結果
商品リスト... Electronics Accessories Clothing Toys Clothing Furniture 配列にAccessoriesは存在するか? = True 配列にStationeryは存在するか? = False 「C」で始まる商品は1つ以上あるか? = True 「D」で始まる商品は1つ以上あるか? = False 「T」で始まる商品は1つ以上あるか? = True 「E」で始まる商品は1つ以上あるか? = True 配列は固定サイズか? = True
Array.Existsは、第2引数に渡した条件(述語)を満たす要素が配列内に1つでもあればtrueを返します。「Clothing」や「Toys」は「C」「T」で始まるためTrueとなり、「D」で始まる商品は存在しないためFalseになっているのがわかります。
例2:複数の配列をforeachで表示して比較する
続いて、2つの文字列配列をそれぞれforeachループで出力し、Equalsメソッドで両者が等しいかどうかを比較する例を見てみましょう。
using System;
public class Demo {
public static void Main() {
String[] strArr1 = new String[3] { "John", "Jacob", "Tim"};
String[] strArr2 = new String[3] { "Tom", "Brad", "Bradley"};
Console.WriteLine("1つ目の文字列配列...");
foreach(string val in strArr1) {
Console.WriteLine(val);
}
Console.WriteLine("2つ目の文字列配列...");
foreach(string val in strArr2) {
Console.WriteLine(val);
}
Console.WriteLine("両方の配列オブジェクトは等しいか? = " + strArr1.Equals(strArr2));
}
}
実行結果
1つ目の文字列配列... John Jacob Tim 2つ目の文字列配列... Tom Brad Bradley 両方の配列オブジェクトは等しいか? = False
Equalsメソッドはオブジェクトの参照(同一インスタンスかどうか)を比較するため、内容が同じでも別々に生成された配列であればfalseが返ります。要素の中身そのものを比較したい場合は、LINQのSequenceEqualメソッドなどを使用するとよいでしょう。
まとめ
- foreachループを使えば、配列の全要素を簡潔なコードで順番に処理できる。
- ループ変数は読み取り専用として扱われるため、ループ内での要素の書き換えには不向き。
Array.Existsとラムダ式を組み合わせると、条件に合う要素の有無を簡単に判定できる。- 配列同士の比較に
Equalsを使うと参照比較になる点に注意が必要。
-
JavaScriptのフローチャートでforeachループをわかりやすく図解する方法
JavaScriptのforeachループをフローチャートで表現する方法 プログラムの処理の流れを視覚的に説明したいとき、フローチャート(流れ図)は非常に有効なツールです。ここでは、JavaScriptにおける forEach ループの動作を、フローチャートを使ってどのように表現すればよいのかを解説します。 foreachループの基本的な流れ forEach メソッドは、配列の各要素に対して順番にコールバック関数を実行します。その処理の流れは、以下の手順として整理できます。 開始: 処理を開始します。 配列の準備: 繰り返し対象となる配列とインデックス(初期値は0)を設定します。 条件判定:
-
JavaScriptのmap()メソッドで配列を変換する方法を解説
JavaScriptで配列の各要素を別の値に変換したい場合、map()メソッドを使うのが最も一般的で効率的な方法です。map()は、元の配列の各要素に対して指定したコールバック関数を実行し、その戻り値から新しい配列を生成します。元の配列は変更されないため、安全に処理を行えるのが大きな特徴です。 以下は、map()メソッドを使って配列の各要素を2乗に変換するサンプルコードです。 コード例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /&