次の方法で共有


コレクションによるオブジェクトの管理

更新 : 2007 年 11 月

コレクションは、多様なオブジェクトを管理するのに最適な手段です。コレクションでは、オブジェクトの追加と削除、インデックスやキーに基づくオブジェクトの取得、および For Each...Next ステートメント (Visual Basic) を使った項目の反復処理ができます。

タイプ セーフでないコレクション

しかし、コレクションは、その柔軟性ゆえにかえってクラスの信頼性を損ねてしまう可能性があります。たとえば、Visual Basic で提供されるコレクションには、すべての要素が Object 型として格納されるため、任意のデータ型の項目を追加できます。不適切なデータ型が追加されることに対する保護機能はなく、要素にアクセスするときには、データ型を Object 型から目的のデータ型に変換する必要があります。

専用コレクション

.NET Framework には、Visual Basic のコレクションに対するいくつかの代替方法が用意されています。System.Collections 名前空間には、キューや並べ替えリストなどの特別な機能を持ったコレクション クラスが含まれています。System.Collections.Specialized 名前空間には、HybridDictionary など、特別な性質のコレクション クラスが含まれています。

タイプ セーフなコレクション

System.Collections.Generic 名前空間のジェネリック コレクションを使用すると、Object 型の要素の短所を回避できます。これらのコレクションは、タイプ セーフであり、コレクションの要素を 1 つの特定のデータ型だけに制限できます。

コレクションの使用方法

コレクションを使ってオブジェクト管理を実装するには、一般的な方法が 3 つあります。widget オブジェクトを編成し、クライアント コンポーネントに公開する、widgetRepository クラスが定義してあるアプリケーションを考えます。コレクションを使用して widgetRepository を実装する場合、次のいずれかの方法を使用できます。

  • **コレクション クラスを使用する。**widgetRepository クラスで、Visual Basic のコレクション クラス のインスタンスか、System.Collections 名前空間、System.Collections.Generic 名前空間、または System.Collections.Specialized 名前空間のいずれかのクラスのインスタンスとして widgetsColl 変数を宣言します。変数をパブリックにし、New (Visual Basic) キーワードを使用してコレクションのインスタンスを作成します。詳細については、「方法 : クラス内にコレクションを定義する」を参照してください。

  • コレクション基本クラスを継承する。CollectionBase クラスを継承して独自の widgetsColl クラスを実装します。widgetRepository クラスで、widgetsColl クラスのインスタンスを定義し、そのインスタンスを返すプロパティを定義します。詳細については、「方法 : クラス内にコレクションを定義する」を参照してください。

  • 独自のコレクションを記述する。 適切なクラスおよびプロシージャを記述して、widgetRepository クラスにコレクション機能を実装します。クラスにコレクションの機能が必要だが既存のコレクション クラスを継承できない場合には、この方法が最も便利です。たとえば、まれにしかありませんが、コレクション クラス以外のクラスを継承する必要がある場合が該当します。クラスは複数のクラスを継承できないため、この場合はコレクション メンバを定義および実装する必要があります。

参照

概念

オブジェクトのグループの管理

Visual Basic のコレクション クラス

参照

System.Collections

System.Collections.Generic

System.Collections.Specialized