Свойство-индексатор расширения (Visual Basic)
Обеспечивает доступ к отдельным элементам коллекции.
Синтаксис
object(index)
Детали
Термин | Определение |
---|---|
object |
Обязательный. Запрашиваемая коллекция. То есть коллекция, реализующая IEnumerable<T> или IQueryable<T>. |
( | Обязательный. Обозначает начало свойства индексатора. |
index |
Обязательный. Целочисленное выражение, указывающее отсчитываемое от нуля положение элемента коллекции. |
) | Обязательный. Обозначает конец свойства индексатора. |
Возвращаемое значение
Объект из указанного расположения в коллекции или Nothing
если индекс выходит за пределы диапазона.
Замечания
Свойство индексатора расширений можно использовать для доступа к отдельным элементам в коллекции. Обычно это свойство индексатора используется для выходных данных свойств оси XML. Свойства дочерней XElement и xml-оси потомков возвращают коллекции объектов или значение атрибута.
Компилятор Visual Basic преобразует свойства индексатора расширений в вызовы ElementAtOrDefault
метода. В отличие от индексатора массива, метод возвращаетсяNothing
, ElementAtOrDefault
если индекс выходит за пределы диапазона. Это поведение полезно, если невозможно легко определить количество элементов в коллекции.
Это свойство индексатора похоже на свойство расширения для коллекций, реализующих IEnumerable<T> или IQueryable<T>: используется только в том случае, если у коллекции нет индексатора или свойства по умолчанию.
Чтобы получить доступ к значению первого элемента в коллекции или объектахXElement, можно использовать свойство XMLValue
.XAttribute Дополнительные сведения см. в разделе "Свойство значения XML".
Пример
В следующем примере показано, как использовать индексатор расширений XElement для доступа ко второму дочернему узлу в коллекции объектов. Доступ к коллекции осуществляется с помощью свойства дочерней оси, которое получает все дочерние элементы, именованные phone
в объекте contact
.
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