C# -3

C#の基礎学習、お疲れ様です!前回はクラスとオブジェクト指向の基本、コンストラクター、プロパティを解説しました。

今回は、C#を実用的に使う上で不可欠な「制御構造」と「配列・コレクション」について、具体的なコードと合わせて解説します。


7. 制御構造(Control Structures)

制御構造は、プログラムがどの命令をどの順番で実行するかを制御する仕組みです。

7-1. 条件分岐 (if 文と switch 文)

特定の条件が満たされたときに処理を実行します。

if

最も基本的な条件分岐です。

C#

int score = 75;

if (score >= 80)
{
    // 条件が真(True)の場合に実行
    System.Console.WriteLine("合格です!");
}
else if (score >= 60)
{
    // 上記が偽(False)で、この条件が真の場合に実行
    System.Console.WriteLine("再試験が必要です。");
}
else
{
    // すべての条件が偽(False)の場合に実行
    System.Console.WriteLine("不合格です。");
}

switch

一つの変数(式)の値に応じて、実行する処理を分岐させます。複数の条件を簡潔に記述できます。

C#

string day = "月";

switch (day)
{
    case "月":
    case "火":
    case "水":
        System.Console.WriteLine("平日の業務日です。");
        break; // 処理を終了し、switch文から抜ける
    case "土":
    case "日":
        System.Console.WriteLine("週末でお休みです。");
        break;
    default: // どのcaseにも一致しない場合に実行
        System.Console.WriteLine("不明な曜日です。");
        break;
}

7-2. 繰り返し処理(ループ)

特定の処理を何度も繰り返して実行します。

for

回数が決まっている場合に最適です。初期化、条件、増減を一行で指定します。

C#

// 0から4まで、5回繰り返す
for (int i = 0; i < 5; i++) 
{
    System.Console.WriteLine($"繰り返し回数: {i}");
}

foreach

配列やコレクションの要素を、最初から最後まで順に取り出しながら処理する場合に最適です。

C#

string[] names = { "アリス", "ボブ", "チャーリー" };

// names配列の要素を一つずつnameに取り出し、処理する
foreach (string name in names)
{
    System.Console.WriteLine($"こんにちは、{name}さん!");
}

while

条件が真(True)である限り、処理を繰り返します。回数が不定な処理に使われます。

C#

int count = 0;
while (count < 3)
{
    System.Console.WriteLine($"カウント: {count}");
    count++; // ループを終了させるための条件を変化させるのを忘れないこと
}

8. 配列とコレクション(データをまとめる)

複数のデータをまとめて管理するための仕組みです。

8-1. 配列(Array)

同じ型のデータを決まった数だけ格納できる固定長のコンテナです。宣言時に**サイズ(要素数)**が決まります。

C#

// 1. 要素数3のint型配列を宣言
int[] scores = new int[3];

// 2. インデックス(添字)を指定して値を設定
scores[0] = 90; // 1番目の要素(インデックスは0から始まる)
scores[1] = 75;
scores[2] = 88;

// 3. 宣言と同時に初期化
string[] fruits = { "リンゴ", "バナナ", "みかん" };

// 4. 配列の要素数(サイズ)を取得
int count = fruits.Length; // 結果: 3

8-2. リスト(List)

配列と異なり、宣言後に要素を自由に追加したり削除したりできる可変長のコンテナです。C#のコレクションの中で最もよく使われます。

リストを使うには、ファイルの先頭に using System.Collections.Generic; を記述する必要があります。

C#

// List<int> は「int型」のデータを格納するリスト
List<int> numbers = new List<int>();

// 要素の追加
numbers.Add(10);
numbers.Add(20);
numbers.Add(30);

// 要素へのアクセス(配列と同じくインデックスを使用)
System.Console.WriteLine(numbers[1]); // 出力: 20

// 要素の削除(インデックス1、つまり20を削除)
numbers.RemoveAt(1);

// foreachで全要素を出力
foreach (int num in numbers)
{
    System.Console.WriteLine(num); // 出力: 10, 30
}

8-3. 辞書(Dictionary)

**キー(Key)値(Value)**をペアにして管理するコレクションです。キーを指定して値を素早く検索・取得できます。

C#

// Dictionary<string, int> は「キーがstring型、値がint型」の辞書
Dictionary<string, int> ages = new Dictionary<string, int>();

// 要素の追加(キー, 値)
ages.Add("Taro", 25);
ages.Add("Hanako", 32);

// キーを指定して値を取得
System.Console.WriteLine($"Hanakoの年齢は {ages["Hanako"]} 歳です。"); // 出力: 32

// キーが存在するかチェック
if (ages.ContainsKey("Taro"))
{
    System.Console.WriteLine("Taroは辞書に登録されています。");
}