ホームページ >バックエンド開発 >C#.Net チュートリアル >C#基礎知識編:基礎知識(15) ICollection、iteration、generics
1. ICollection インターフェイス
配列は、.net フレームワークによって定義される最も基本的なコレクション型です。配列に加えて、.net フレームワークでも多くのコレクション型が定義されます。 msdn を開くと、すべてのコレクションが System.Collections 名前空間の下にあることがわかります。
Collection クラス:
ArrayList: サイズをオンデマンドで動的に増加できる配列を使用して IList インターフェイスを実装します。
BitArray: 値を管理する圧縮配列。値はブール値として表されます。true はビットがオン (1) であることを意味し、false はビットがオフ (0) であることを意味します。
CaseInsensitiveComparer: 比較時に文字列の大文字と小文字を無視して、2 つのオブジェクトが等しいかどうかを比較します。
CollectionBase: 厳密に型指定されたコレクションの抽象基本クラスを提供します。
Comparer: 2 つのオブジェクトが等しいかどうかを比較します。文字列比較では大文字と小文字が区別されます。
DictionaryBase: 厳密に型指定されたキー/値ペアのコレクションの抽象基本クラスを提供します。
Hashtable: キーのハッシュ コードに従って編成されたキー/値ペアのコレクションを表します。
Queue: オブジェクトの先入れ先出しコレクションを表します。
ReadOnlyCollectionBase: 厳密に型指定された非ジェネリック読み取り専用コレクションの抽象基本クラスを提供します。
SortedList: キーによって並べ替えられ、キーとインデックスによってアクセスできるキーと値のペアのコレクションを表します。
スタック: 単純な後入れ先出しの非ジェネリックなオブジェクトのコレクションを表します。
インターフェイス:
ICollection: すべての非ジェネリック コレクションのサイズ、列挙子、および同期メソッドを定義します。
IComparer: 2 つのオブジェクトを比較するメソッドを公開します。
IDictionary: キーと値のペアの非普遍的なコレクションを表します。
IDictionaryEnumerator: 非汎用辞書の要素を列挙します。
IEnumerable: 非ジェネリック コレクションに対する単純な反復をサポートする列挙子を公開します。
IEnumerator: 非ジェネリック コレクションの単純な反復をサポートします。
IEqualityComparer: オブジェクトの等価比較をサポートするメソッドを定義します。
IList: インデックスによって個別にアクセスできるオブジェクトの非汎用コレクションを表します。
主に ICollection インターフェースと IEnumerable インターフェースを見てください。
ICollection:
このインターフェイスは、その実装クラスの 2 つの主な仕様を定義します:
(1) コレクション要素の数、つまり Count 属性
(2) 反復 (GetEnumerator メソッド)。
GetEnumertor メソッドは、ICollection の親インターフェイス IEumerable から継承されます。 ICollection インターフェイスは、オブジェクト型オブジェクトへの参照を格納および取得するコレクションを定義するため、さまざまな参照型オブジェクトまたは値型オブジェクトへの参照を格納および取得できます。
IEnumerable インターフェイス:
このインターフェイスは、ICollection の親インターフェイスであり、実装するクラスに反復可能な機能を提供します。 IEumerable インターフェイスには GetEnumerator メソッドが 1 つだけあり、コレクションを反復処理する列挙子を返します
2. 反復
反復 (イテレーターとも呼ばれます) は、デザイン パターンにおける反復モードであり、その意味は、集合体に順次アクセスするメソッドを提供することです。オブジェクトの内部表現を公開せずに個々の要素を作成します。コレクションの格納方法が異なるため、List は連続格納、リンク リストはオブジェクト間の参照格納を使用します。そうすると、コレクションを横断する必要がある場合に不便になり、異なるコレクションをすべて横断できるメソッドが必要になります。イテレータ。
イテレータは結合クラスを無限容量のコンテナとして扱い、ストレージ ルールは線形です。つまり、最初と最後を除くすべての要素には直接の先行要素と直接の後続要素があり、コンテナにはコンテナ内の任意のストレージ ユニットを指すことができるフラグがあります。一方向反復と双方向反復の 2 つの方法があります。
(1) 一方向反復
一方向反復は、集合の単位フラグが集合の特定の要素から開始して 1 つずつ後方にのみ移動できることを指します。 したがって、反復では 3 つの操作が定義されます。 . 現在の項目
b. 次の項目に進み、終了かどうかを判断します
c. 最初の項目に戻ります
(2) 双方向反復モード
双方向反復モードの場合、セットの単位マークが 1 つ戻ります。セット内の項目から開始して 1 つずつ進めることもできます。したがって、次の 4 つの操作があります:
a、現在の項目
b、次の項目に進むかどうかを決定します。終了です
c、前の項目に戻り、セットかどうかを判断します 開始
d、初期位置に戻ります
.net フレームワークは、IEumerable インターフェイスを使用して一方向の反復仕様を定義します。 ICollection インターフェイスは、IEumerable インターフェイスを継承します。このインターフェイスによって定義される GetEnumerator メソッドは、現在のコレクション クラス オブジェクトの反復オブジェクト、つまり IEumerable インターフェイスを実装するオブジェクトを取得できます。
IEnumerable インターフェイスを実装するクラスはすべて、foreach ループを使用して反復的に走査できます。
IEnumerator インターフェイスは、オブジェクト型のオブジェクト参照をトラバースできるイテレータを定義し、IEnumerable インターフェイスは、このイテレータ オブジェクトを取得するメソッドを定義します。
3. ジェネリック コレクション
ICollection
ICollection
ストレージ タイプが決定されているため、ICollection
IEnumerable
ICollection
上記は C# の基礎知識をまとめたものです: 基礎知識 (15) ICollection、iteration、generics 関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。