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<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 — это ряд элементов в коллекции.