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

Определение

Выполняет перечисление элементов коллекции Queue<T>.

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

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

T
Наследование
Queue<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()

Освобождает все ресурсы, занятые модулем Queue<T>.Enumerator.

MoveNext()

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

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

IEnumerator.Current

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

IEnumerator.Reset()

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

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

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