拡張インデクサ プロパティ
更新 : 2007 年 11 月
コレクション内の個別の要素へのアクセスを提供します。
object(index)
指定項目
object
必ず指定します。クエリ可能なコレクションです。つまり、IEnumerable<T> または IQueryable<T> を実装するコレクションです。(
必ず指定します。インデクサ プロパティの開始を示します。index
必ず指定します。コレクションの要素の 0 から始まる位置を指定する整数式です。)
必ず指定します。インデクサ プロパティの終了を示します。
戻り値
コレクション内の指定した位置にあるオブジェクト、またはインデックスが範囲外の場合は Nothing。
解説
拡張インデクサ プロパティを使用すると、コレクションの個別の要素にアクセスできます。このインデクサ プロパティは、通常、XML 軸プロパティの出力に対して使用します。XML 子軸プロパティおよび XML 子孫軸プロパティは、XElement オブジェクトのコレクションまたは属性値を返します。
Visual Basic コンパイラは、拡張インデクサ プロパティを ElementAtOrDefault メソッドの呼び出しに変換します。配列インデクサとは異なり、ElementAtOrDefault メソッドはインデクサが範囲外の場合は Nothing を返します。この動作は、コレクションの要素の数を簡単に特定できない場合に便利です。
このインデクサ プロパティは、IEnumerable<T> または IQueryable<T> を実装するコレクションの拡張プロパティと似ています。拡張プロパティは、コレクションにインデクサまたは既定のプロパティがない場合にのみ使用されます。
XElement オブジェクトまたは XAttribute オブジェクトのコレクションの最初の要素の値にアクセスするには、XML の Value プロパティを使用できます。詳細については、「XML Value プロパティ」を参照してください。
使用例
次の例では、拡張インデクサを使用して、XElement オブジェクトのコレクションの 2 番目の子ノードにアクセスする方法を示します。コレクションには、子軸プロパティを使用してアクセスします。子軸プロパティは、contact オブジェクト内にある phone という名前のすべての子要素を取得します。
Dim contact As XElement = _
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
Console.WriteLine("Second phone number: " & contact.<phone>(1).Value)
このコードは、次のテキストを表示します。
Second phone number: 425-555-0145