C# コレクションのチュートリアルと例
⚡ スマートサマリー
C# のコレクションは、オブジェクトのグループを格納および管理するための柔軟な方法を提供します。配列とは異なり、コレクションは実行時にサイズが増減し、System.Collections および System.Collections.Generic 名前空間には、リスト、辞書、スタック、キューなどの既製の型が用意されています。
前回のチュートリアルでは、C# で配列を使用する方法について学びました。 簡単に概要を説明します。プログラミングにおける配列は、関連するオブジェクトのセットをグループ化するために使用されます。 したがって、XNUMX つの変数名を介してアクセスできる配列または整数のセットを作成できます。
C# のコレクションとは何ですか?
コレクションは次のようなものです 配列、オブジェクトのグループを操作するためのより柔軟な方法が提供されます。
配列では、配列内の要素の数を事前に定義する必要があることに気づいたでしょう。 これは配列が宣言されたときに行う必要がありました。
ただし、コレクションの場合は、コレクションのサイズを事前に定義する必要はありません。 いつでもコレクションに要素を追加したり、コレクションから要素を削除したりできます。 この章では、C# で利用可能なさまざまなコレクションをどのように操作できるかに焦点を当てます。
System.Collections クラス
.NET Framework では、汎用ではないオリジナルのコレクション クラスが System.Collections 名前空間にまとめられています。以下の表は、すぐに使用できる主な型をまとめたものです。
| 収集 | 詳細説明 |
| 配列リスト | ArrayList コレクションは Array に似ています。 C# のデータ型。 最大の違いは、配列リスト コレクションの動的な性質です。 |
| スタック | スタックは、後入れ先出し(LIFO)の概念を表す特殊なコレクションです。 |
| キュー | キューは、先入れ先出しの概念を表す特殊なケースのコレクションです。 |
| ハッシュ表 | ハッシュテーブルは、キーと値のペアを格納するために使用される特別なコレクションです。 |
| ソートされたリスト | SortedList は、デフォルトでキーと値のペアをキーの昇順で格納するコレクションです。 |
| ビット配列 | ビット配列は、ビットを格納するデータ構造の配列です。 |
C# の汎用コレクション
上記の非ジェネリッククラスは、すべての要素を汎用オブジェクトとして格納するため、コンパイラは型チェックを行うことができず、プログラムは値のボックス化にわずかなコストを負担します。この問題を解決するために、C# では System.Collections.Generic 名前空間が追加され、各コレクションは宣言された 1 つの型にバインドされるようになりました。
リストなどの汎用コレクション文字列のみを受け入れるため、コンパイル時にエラーが検出され、アイテムを読み込む際に型変換は不要です。これにより、ジェネリックコレクションはより安全で高速、かつ読みやすくなり、現代のC#コードではデフォルトの選択肢となっています。
最も一般的な汎用コレクションを以下に示します。
- リスト: サイズ変更可能なインデックスベースのリストで、ArrayListの汎用的な代替品です。
- 辞書: キーと値のペアを格納し、ハッシュベースの高速な検索機能を提供します。
- ハッシュセット: 一意の値のみを保持し、和集合などの集合演算をサポートします。
- 列: 先入れ先出し方式のコレクションで、キューの汎用版です。
- スタック: 後入れ先出し方式のコレクションで、スタックの汎用版です。
- ソート済みリスト: キーと値のペアをキーの昇順でソートして保持します。
C# リストコレクションの例
Listは動的配列のように動作するため、最も広く使用されている汎用コレクションです。以下の例では、文字列のリストを作成し、項目を追加および削除し、そのサイズを読み取り、残りの値を出力します。すべてのコードはProgram.csファイルに記述されています。
ステップ1) System.Collections.Generic 名前空間をインポートし、文字列のリストを宣言します。
ステップ2) Addメソッドでアイテムを追加し、Removeメソッドでアイテムを削除します。
ステップ3) Countプロパティを読み込み、foreach文を使ってリストをループ処理します。
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code 説明:-
- System.Collections.Generic 名前空間がインポートされるため、List 型がプログラムで使用できるようになります。
- 新しいリスト「tutorials」という名前のファイルが作成され、Addメソッドを使用して3つの名前が追加されます。
- Remove メソッドは値を削除します「Pythonこれにより、リストには2つの項目が残ります。
- Count プロパティはアイテムの数を返し、foreach ループは残りの値を順番に出力します。
プログラムを実行すると、まずカウントを出力します。 2、続いて Java (NAIST) と コトリン 別々の行に表示されます。これは、コレクションが実行時にサイズを変更する方法を示しています。固定配列ではこれはできません。
C#における配列とコレクションの違い
どちらも 配列 また、コレクションは関連する項目を1つの名前でグループ化しますが、プログラムの実行中はそれぞれ異なる動作をします。それぞれの適切な使用方法を理解することで、より簡潔で効率的なコードを書くことができます。
主な違いは以下のとおりです。
- サイズ: 配列は宣言時に固定長が設定されるのに対し、コレクションはいつでも増減できる。
- 型処理: 配列は単一の型を格納するのに対し、コレクションはジェネリクスを使用すれば型安全性を確保でき、ジェネリクスを使用しない場合は様々な型のオブジェクトを格納できる。
- 住所 配列は言語に組み込まれていますが、コレクション クラスは System.Collections および System.Collections.Generic 名前空間に存在します。
- 組み込みの操作: コレクションは、アイテムの追加、削除、検索、ソートを行うための便利な方法を提供する一方、配列は基本的なインデックスによるアクセスしか提供しません。
- 最適な用途: 項目の数が既知で固定されている場合は配列を、プログラムの実行中に項目数が変化する場合はコレクションを選択してください。
つまり、配列は固定サイズのデータに最適であり、コレクションはほとんどの実際のアプリケーションが必要とする柔軟性を提供する。

