C#コレクション:入門ガイド
こんにちは、未来のプログラマーさんたち!今日は、C#のコレクションの世界への興味深い旅を始めます。プログラミングが初めてであっても心配しないでください。私はあなたの親切なガイドとして、すべてをステップバイステップで説明します。さあ、潜りましょう!
コレクションとは?
パーティを計画して、すべてのゲストを把握する必要があるとします。それぞれの名前を別の紙に書くこともできますが、それは散らかって非効率的です。代わりに、ゲストリストを使うでしょう。C#のコレクションはそのゲストリストのようなものです。それにより、関連するオブジェクトのグループを整理し、管理することができます。
コレクションを使う理由
コレクションは非常に便利で、以下のようなことができます:
- 単一の変数に複数のアイテムを保存する
- アイテムを簡単に追加または削除する
- データを検索およびソートする
- データのグループに対して操作を行う
それでは、C#で最も一般的なコレクションのいくつかを見てみましょう。
リスト:柔軟な友達
リストとは?
リストは必要に応じて拡張または縮小できる動的配列です。正確なアイテム数がわからない場合に最適です。
リストの使い方
お気に入りの果物のリストを作成してみましょう:
List<string> fruits = new List<string>();
fruits.Add("りんご");
fruits.Add("バナナ");
fruits.Add("チェリー");
Console.WriteLine($"私たちは{fruits.Count}個の果物を持っています。");
Console.WriteLine($"2番目の果物は{fruits[1]}です。");
この例では、以下を行います:
- 新しい文字列のリストを作成する
- 3つの果物をリストに追加する
- (
Count
プロパティを使用して)果物の数を表示する - インデックス(0から始まる)を使用して2番目の果物にアクセスする
出力:
私たちは3個の果物を持っています。
2番目の果物はバナナです。
辞書:成功への鍵
辞書とは?
辞書は実際の辞書のように、キーと値のペアを保存します。各キーはユニークで、辞書の各単語が独自の定義を持つのと同じです。
辞書の使い方
果物の色の辞書を作成してみましょう:
Dictionary<string, string> fruitColors = new Dictionary<string, string>();
fruitColors.Add("りんご", "赤");
fruitColors.Add("バナナ", "黄");
fruitColors.Add("ブドウ", "紫");
Console.WriteLine($"りんごは{fruitColors["りんご"]}です。");
if (fruitColors.ContainsKey("チェリー"))
{
Console.WriteLine($"チェリーは{fruitColors["チェリー"]}です。");
}
else
{
Console.WriteLine("チェリーの色はわかりません。");
}
ここでは、以下を行います:
- 文字列キーと文字列値を持つ辞書を作成する
- 3つの果物と色のペアを追加する
- 果物のキーを使用して色にアクセスする
- キーが存在するか確認してから値にアクセスする
出力:
りんごは赤です。
チェリーの色はわかりません。
キュー:先着順
キューとは?
キューはスーパーマーケットのレジの列のように、先に並んだ人から順にサービスを受けます。プログラミング用語では、「先入先出」(FIFO)データ構造です。
キューの動作
簡単な印刷キューをシミュレートしてみましょう:
Queue<string> printQueue = new Queue<string>();
printQueue.Enqueue("Report.doc");
printQueue.Enqueue("Picture.jpg");
printQueue.Enqueue("Spreadsheet.xlsx");
Console.WriteLine($"キューのアイテム数: {printQueue.Count}");
Console.WriteLine($"印刷中: {printQueue.Dequeue()}");
Console.WriteLine($"次は: {printQueue.Peek()}");
Console.WriteLine($"残りのアイテム数: {printQueue.Count}");
この例では、以下を行います:
- 文字列のキューを作成する
- 3つのアイテムをキューに追加(Enqueue)する
- 最初のアイテムを削除(Dequeue)する
- 次のアイテムを確認(Peek)するが削除しない
出力:
キューのアイテム数: 3
印刷中: Report.doc
次は: Picture.jpg
残りのアイテム数: 2
スタック:後入先出
スタックとは?
スタックはプレートの山のように、上に追加し、上から取り出します。これは「後入先出」(LIFO)データ構造です。
スタックの積み重ね
テキストエディタの undo 操作を追跡するためにスタックを使ってみましょう:
Stack<string> undoStack = new Stack<string>();
undoStack.Push("Type 'こんにちは'");
undoStack.Push("Type ' 世の中'");
undoStack.Push("Delete '世の中'");
Console.WriteLine($"Undo 操作: {undoStack.Count}");
Console.WriteLine($"最後のアクション: {undoStack.Peek()}");
Console.WriteLine($"Undo 中: {undoStack.Pop()}");
Console.WriteLine($"残りの操作: {undoStack.Count}");
ここでは、以下を行います:
- 文字列のスタックを作成する
- 3つのアクションをスタックに追加(Push)する
- トップアイテムを確認(Peek)する
- トップアイテムを削除(Pop)して返す
出力:
Undo 操作: 3
最後のアクション: Delete '世の中'
Undo 中: Delete '世の中'
残りの操作: 2
コレクションメソッドテーブル
以下は、これらのコレクションの一般的なメソッドのテーブルです:
メソッド | リスト | 辞書 | キュー | スタック |
---|---|---|---|---|
Add | ✓ | ✓ | - | - |
Remove | ✓ | ✓ | - | - |
Clear | ✓ | ✓ | ✓ | ✓ |
Contains | ✓ | ✓ (ContainsKey) | ✓ | ✓ |
Count | ✓ | ✓ | ✓ | ✓ |
Enqueue | - | - | ✓ | - |
Dequeue | - | - | ✓ | - |
Push | - | - | - | ✓ |
Pop | - | - | - | ✓ |
Peek | - | - | ✓ | ✓ |
まとめ
おめでとうございます!あなたはC#のコレクションの世界への初めてのステップを踏み出しました。それぞれのコレクションタイプには強みがあり、適切な選択を行うことでコードを効率的かつ読みやすくすることができます。
プログラミングの旅を続ける中で、これらのコレクションのさらに多くの使い方を発見するでしょう。実験を恐れずに – それが私たちが学び、成長する方法です。
ハッピーコーディングを、そしてあなたのコレクションは常に整理整頓されたままでありますように!
Credits: Image by storyset