ArrayList.GetEnumerator Метод

Определение

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

Перегрузки

Имя Описание
GetEnumerator()

Возвращает перечислитель для всего ArrayList.

GetEnumerator(Int32, Int32)

Возвращает перечислитель для диапазона элементов в элементе ArrayList.

GetEnumerator()

Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs

Возвращает перечислитель для всего ArrayList.

public:
 virtual System::Collections::IEnumerator ^ GetEnumerator();
public virtual System.Collections.IEnumerator GetEnumerator();
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Overridable Function GetEnumerator () As IEnumerator

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

Целое IEnumeratorArrayList.

Реализации

Примеры

В следующем примере возвращается перечислитель для ArrayListобъекта , а перечислитель для диапазона элементов в объекте ArrayList.

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList colors = new ArrayList();
        colors.Add("red");
        colors.Add("blue");
        colors.Add("green");
        colors.Add("yellow");
        colors.Add("beige");
        colors.Add("brown");
        colors.Add("magenta");
        colors.Add("purple");

        IEnumerator e = colors.GetEnumerator();
        while (e.MoveNext())
        {
            Object obj = e.Current;
            Console.WriteLine(obj);
        }

        Console.WriteLine();

        IEnumerator e2 = colors.GetEnumerator(2, 4);
        while (e2.MoveNext())
        {
            Object obj = e2.Current;
            Console.WriteLine(obj);
        }
    }
}

/* This code example produces
   the following ouput:
    red
    blue
    green
    yellow
    beige
    brown
    magenta
    purple

    green
    yellow
    beige
    brown
 */
Imports System.Collections

Class Program
    Private Shared Sub Main(ByVal args As String())
        Dim colors As New ArrayList()
        colors.Add("red")
        colors.Add("blue")
        colors.Add("green")
        colors.Add("yellow")
        colors.Add("beige")
        colors.Add("brown")
        colors.Add("magenta")
        colors.Add("purple")
        
        Dim e As IEnumerator = colors.GetEnumerator()
        While e.MoveNext()
            Dim obj As [Object] = e.Current
            Console.WriteLine(obj)
        End While
        
        Console.WriteLine()
        
        Dim e2 As IEnumerator = colors.GetEnumerator(2, 4)
        While e2.MoveNext()
            Dim obj As [Object] = e2.Current
            Console.WriteLine(obj)
        End While
    End Sub
End Class

' This code example produces
' the following ouput:
' red
' blue
' green
' yellow
' beige
' brown
' magenta
' purple
'
' green
' yellow
' beige
' brown
'

Комментарии

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

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

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

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

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

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

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

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

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

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

GetEnumerator(Int32, Int32)

Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs

Возвращает перечислитель для диапазона элементов в элементе ArrayList.

public:
 virtual System::Collections::IEnumerator ^ GetEnumerator(int index, int count);
public virtual System.Collections.IEnumerator GetEnumerator(int index, int count);
abstract member GetEnumerator : int * int -> System.Collections.IEnumerator
override this.GetEnumerator : int * int -> System.Collections.IEnumerator
Public Overridable Function GetEnumerator (index As Integer, count As Integer) As IEnumerator

Параметры

index
Int32

Отсчитываемый от нуля начальный индекс ArrayList раздела, к которому должен ссылаться перечислитель.

count
Int32

Количество элементов в ArrayList разделе, к которому должен ссылаться перечислитель.

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

Значение IEnumerator для указанного диапазона элементов в элементе ArrayList.

Исключения

index меньше нуля.

–или–

count меньше нуля.

index и count не указывайте допустимый диапазон в объекте ArrayList.

Примеры

В следующем примере возвращается перечислитель для ArrayListобъекта , а перечислитель для диапазона элементов в объекте ArrayList.

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList colors = new ArrayList();
        colors.Add("red");
        colors.Add("blue");
        colors.Add("green");
        colors.Add("yellow");
        colors.Add("beige");
        colors.Add("brown");
        colors.Add("magenta");
        colors.Add("purple");

        IEnumerator e = colors.GetEnumerator();
        while (e.MoveNext())
        {
            Object obj = e.Current;
            Console.WriteLine(obj);
        }

        Console.WriteLine();

        IEnumerator e2 = colors.GetEnumerator(2, 4);
        while (e2.MoveNext())
        {
            Object obj = e2.Current;
            Console.WriteLine(obj);
        }
    }
}

/* This code example produces
   the following ouput:
    red
    blue
    green
    yellow
    beige
    brown
    magenta
    purple

    green
    yellow
    beige
    brown
 */
Imports System.Collections

Class Program
    Private Shared Sub Main(ByVal args As String())
        Dim colors As New ArrayList()
        colors.Add("red")
        colors.Add("blue")
        colors.Add("green")
        colors.Add("yellow")
        colors.Add("beige")
        colors.Add("brown")
        colors.Add("magenta")
        colors.Add("purple")
        
        Dim e As IEnumerator = colors.GetEnumerator()
        While e.MoveNext()
            Dim obj As [Object] = e.Current
            Console.WriteLine(obj)
        End While
        
        Console.WriteLine()
        
        Dim e2 As IEnumerator = colors.GetEnumerator(2, 4)
        While e2.MoveNext()
            Dim obj As [Object] = e2.Current
            Console.WriteLine(obj)
        End While
    End Sub
End Class

' This code example produces
' the following ouput:
' red
' blue
' green
' yellow
' beige
' brown
' magenta
' purple
'
' green
' yellow
' beige
' brown
'

Комментарии

Оператор foreach языка C# скрывает сложность перечислителей. Поэтому рекомендуется использовать foreach вместо непосредственного управления перечислителем.

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

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

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

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

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

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

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

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

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