インデックス付きプロパティのデザイン

インデックス付きプロパティを使用すると、文字列内の文字や BitArray 内のビットなどの項目のグループに配列のようにアクセスできます。 インデックス付きプロパティは、インデクサーまたは既定のプロパティと呼ばれ、標準のプロパティとは違って、アクセス先のグループ内の要素を示すパラメーターを受け取ります。 インデックス付きプロパティは、ループで使用されることが多いため、その実装はできるだけ簡単にする必要があります。 以下のガイドラインに従うと、適切にデザインされたインデックスを適宜、型に含めることができます。

内部配列に格納されているデータへのアクセスを提供する場合は、インデクサーの使用を検討してください。

項目のコレクションを表す型にインデクサーを提供することを検討してください。

複数のパラメーターを持つインデックス付きプロパティは避けてください。

インデクサーで複数のパラメーターが必要な場合は、プロパティが論理コレクションへのアクセスを実際に表すかどうかを再評価します。 アクセスを表さない場合は、代わりにメソッドを使用し、Get または Set で始まるメソッド名を選択するようにしてください。

System.Int32、System.Int64、System.String、System.Object、列挙型、またはジェネリック型パラメーター以外のパラメーター型を持つインデクサーは避けてください。

デザインで他の型のパラメーターが必要な場合は、メンバーが論理コレクションへのアクセスを実際に表すかどうかを厳密に再評価する必要があります。 アクセスを表さない場合は、代わりにメソッドを使用し、Get または Set で始まるメソッド名を選択するようにしてください。

インデックス付きプロパティには、名前として Item を使用してください。ただし、明らかにより適切な名前がある場合を除きます (たとえば、System.String.Chars(System.Int32) プロパティを参照)。

IndexerNameAttribute 属性を使用すると、インデクサーの名前をカスタマイズできます。

セマンティクスが同等のインデクサーとメソッドの両方を提供しないでください。

次のコード例では、インデクサーをメソッドに変更する必要があります。

<System.Runtime.CompilerServices.IndexerNameAttribute("PositionsHeld")> _
    Public Property Item (skillId as Integer) as JobInfoCollection


...


Public Function GetPositions(skillId as Integer, _
    minJobLevel as Integer) _
   as JobInfoCollection
[System.Runtime.CompilerServices.IndexerNameAttribute("PositionsHeld")]
    public JobInfoCollection this [int skillId]


...


public JobInfoCollection GetPositions(int skillId, int minJobLevel)
[System::Runtime::CompilerServices::IndexerNameAttribute("PositionsHeld")]
property JobInfoCollection^ default [int]


...


JobInfoCollection^ GetPositions(int skillId, int minJobLevel)

オーバーロードされたインデクサーの複数のファミリを 1 つの型に提供しないでください。

C# コンパイラなど、一部のコンパイラには、このガイドラインが適用されます。

インデクサーの複数のセットは、一部の言語ではサポートされません。 使用した場合、開発者によってはこれらのメンバーにアクセスできなくなることがあります。

既定以外のインデックス付きプロパティは使用しないでください。

C# コンパイラなど、一部のコンパイラには、このガイドラインが適用されます。 既定以外のインデックス付きプロパティは、すべてのプログラミング言語でサポートされるわけではありません。 使用した場合、開発者によってはこれらのメンバーにアクセスできなくなることがあります。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。

参照

概念

プロパティのデザイン

その他の技術情報

メンバーのデザインのガイドライン

クラス ライブラリ開発のデザイン ガイドライン