SortedList<TKey,TValue>.GetEnumerator Метод

Определение

Возвращает перечислитель, осуществляющий перебор элементов списка SortedList<TKey,TValue>.

public:
 System::Collections::Generic::IEnumerator<System::Collections::Generic::KeyValuePair<TKey, TValue>> ^ GetEnumerator();
public System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>> GetEnumerator ();
member this.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<'Key, 'Value>>
Public Function GetEnumerator () As IEnumerator(Of KeyValuePair(Of TKey, TValue))

Возвращаемое значение

IEnumerator<KeyValuePair<TKey,TValue>>

Интерфейс IEnumerator<T> типа KeyValuePair<TKey,TValue> для объекта SortedList<TKey,TValue>.

Реализации

Комментарии

Оператор foreach языка C# (for eachв C++, For Each в Visual Basic) скрывает сложность перечислителей. Поэтому рекомендуется вместо непосредственного использования перечислителя применять ключевое слово foreach.

Перечислители могут использоваться для чтения данных в коллекции, но не для ее изменения.

Словарь хранится в отсортированного порядке с помощью внутреннего дерева. Каждый новый элемент размещается в правильной позиции сортировки, и дерево настраивается для поддержания порядка сортировки при удалении элемента. При перечислении порядок сортировки сохраняется.

Изначально перечислитель располагается перед первым элементом коллекции. В этой позиции значение свойства Current не определено. Поэтому необходимо вызвать метод MoveNext, чтобы переместить перечислитель к первому элементу коллекции до считывания значения свойства Current.

Current возвращает тот же объект, пока не будет вызван метод MoveNext. MoveNext задает Current в качестве значения для следующего элемента.

Если MoveNext передает конец коллекции, перечислитель позиционируется после последнего элемента в коллекции и MoveNext возвращается false. Если перечислитель находится в этой позиции, последующие вызовы для MoveNext возврата false. Если последний обратный вызов MoveNext возвращен false, Current не определен. Значение свойства Current не может быть повторно задано первому элементу коллекции; вместо этого следует создать новый экземпляр перечислителя.

Перечислитель является допустимым до тех пор, пока коллекция остается неизменной. Если в коллекцию вносятся изменения, такие как добавление, изменение или удаление элементов, перечислитель неустранимо недопустим и следующий вызов MoveNext или Reset вызывает исключение InvalidOperationException.

У перечислителя нет эксклюзивного доступа к коллекции, поэтому перечисление коллекции не является потокобезопасной процедурой. Чтобы гарантировать потокобезопасность, можно заблокировать коллекцию на время всего перечисления. Чтобы разрешить доступ к коллекции из нескольких потоков для чтения и записи, необходимо реализовать собственную синхронизацию.

Реализации коллекций по умолчанию не System.Collections.Generic синхронизируются.

Этот метод является операцией O(1).

Применяется к

См. также раздел