Поделиться через


SortedDictionary<TKey,TValue>.KeyCollection.IEnumerable<TKey>.GetEnumerator Метод

Определение

Возвращает перечислитель, выполняющий перебор элементов в коллекции.

 virtual System::Collections::Generic::IEnumerator<TKey> ^ System.Collections.Generic.IEnumerable<TKey>.GetEnumerator() = System::Collections::Generic::IEnumerable<TKey>::GetEnumerator;
System.Collections.Generic.IEnumerator<TKey> IEnumerable<TKey>.GetEnumerator ();
abstract member System.Collections.Generic.IEnumerable<TKey>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'Key>
override this.System.Collections.Generic.IEnumerable<TKey>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'Key>
Function GetEnumerator () As IEnumerator(Of TKey) Implements IEnumerable(Of TKey).GetEnumerator

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

IEnumerator<TKey>

Объект IEnumerator<T>, который может использоваться для итерации элементов коллекции.

Реализации

Комментарии

Оператор 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(log n), где n — это ряд элементов в коллекции.

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

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