C#で使えるループ処理の種類を解説|while・for・do...while・foreachの基本とサンプルコード
ループ文とは、特定の条件に基づいて、1つの文または複数の文を繰り返し実行するための制御構造です。C#では、用途に応じて複数の種類のループが用意されており、プログラムの効率と可読性を大きく向上させることができます。
C#でサポートされている主なループは以下の3つです。
| 番号 | ループの種類と説明 |
|---|---|
| 1 | whileループ 指定した条件がtrueである限り、文または文のグループを繰り返し実行します。ループ本体を実行する前に条件を判定するため、条件が最初からfalseの場合は一度も実行されません。 |
| 2 | forループ 一連の文を指定回数だけ繰り返し実行します。初期化・条件・更新を1行にまとめて記述できるため、ループ変数を管理するコードを簡潔に書けるのが特徴です。 |
| 3 | do...whileループ whileループと似ていますが、条件の判定をループ本体の最後に行う点が異なります。そのため、条件に関係なく最低1回は必ずループ本体が実行されます。 |
さらにC#では、配列やコレクションの各要素を順番に処理するのに便利なforeachループを使用することもできます。foreachはインデックス管理が不要で、要素を1つずつ取り出して処理できるため、コードがよりシンプルになります。
サンプルコード:forループとforeachループの使用例
以下の例では、まずforループで10個の整数を持つ配列を初期化し、続いてforeachループで各要素の値を出力しています。
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int[] n = new int[10]; /* nは10個の整数からなる配列 */
/* 配列nの各要素を初期化 */
for (int i = 0; i < 10; i++) {
n[i] = i + 100;
}
/* 各配列要素の値を出力 */
foreach (int j in n) {
int i = j - 100;
Console.WriteLine("Element[{0}] = {1}", i, j);
}
Console.ReadKey();
}
}
}実行結果
Element[0] = 100 Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109
ループの使い分けのポイント
- whileループ: 繰り返し回数が事前に不明な場合に適しています。
- forループ: 繰り返し回数があらかじめ決まっている場合に適しています。
- do...whileループ: メニュー表示など、少なくとも1回は必ず処理を実行したい場合に適しています。
- foreachループ: 配列やリストなどの全要素を順に処理したい場合に適しています。
それぞれのループの特性を理解し、目的に応じて適切に使い分けることで、より読みやすく保守性の高いC#コードを書くことができます。
-
C#の条件分岐ステートメントの種類をわかりやすく解説
条件ステートメント(条件分岐)とは条件ステートメントとは、プログラムが評価・判定すべき1つ以上の条件をプログラマーが指定し、その条件が真(true)と判定された場合に実行する処理、さらに必要に応じて、偽(false)と判定された場合に実行する別の処理を記述できる構文のことです。これにより、プログラムは状況に応じて異なる動作を行うことができます。C#では、目的に応じて複数の条件ステートメントを使い分けることができます。以下に、C#でサポートされている主な条件ステートメントの種類をまとめます。C#の主な条件ステートメント一覧番号ステートメントと説明1if ステートメントブール式(true / fa
-
C#のポインターデータ型とは?宣言方法とunsafeコードの使い方を解説
C#のポインターデータ型とはポインター(pointer)とは、別の変数のメモリアドレスを値として保持する特殊な変数です。つまり、ポインターはメモリ上の特定の場所を直接指し示すことができます。通常の変数や定数と同様に、ポインターも使用する前に必ず宣言する必要があります。ポインターの宣言構文C#でポインターを宣言する基本的な構文は以下の通りです。type *var-name;具体的な宣言例を見てみましょう。int *ip; /* 整数型(int)へのポインター */ double *dp; /* 倍精度浮動小数点型(double)へのポインター */このように、*(アスタリスク)を使って