HashSet<T>.Enumerator Структура

Определение

Перечисляет элементы объекта HashSet<T>.

public: value class HashSet<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public struct HashSet<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
[System.Serializable]
public struct HashSet<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
type HashSet<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IEnumerator
    interface IDisposable
[<System.Serializable>]
type HashSet<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IDisposable
    interface IEnumerator
[<System.Serializable>]
type HashSet<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IEnumerator
    interface IDisposable
Public Structure HashSet(Of T).Enumerator
Implements IEnumerator(Of T)

Параметры типа

T
Наследование
HashSet<T>.Enumerator
Атрибуты
Реализации

Комментарии

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

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

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

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

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

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

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

Используемые по умолчанию реализации коллекций в пространстве имен System.Collections.Generic не синхронизированы.

Свойства

Current

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

Методы

Dispose()

Освобождает все ресурсы, используемые объектом HashSet<T>.Enumerator.

MoveNext()

Перемещает перечислитель к следующему элементу коллекции HashSet<T>.

Явные реализации интерфейса

IEnumerator.Current

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

IEnumerator.Reset()

Устанавливает перечислитель в его начальное положение, т. е. перед первым элементом коллекции.

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