Exportar (0) Imprimir
Expandir todo

IEnumerable.GetEnumerator (Método)

Actualización: noviembre 2007

Devuelve un enumerador que recorre en iteración una colección.

Espacio de nombres:  System.Collections
Ensamblado:  mscorlib (en mscorlib.dll)

IEnumerator GetEnumerator()
IEnumerator GetEnumerator()
function GetEnumerator() : IEnumerator

Valor devuelto

Tipo: System.Collections.IEnumerator
Objeto IEnumerator que se puede utilizar para recorrer en iteración la colección.

vb#c#

La instrucción foreach del lenguaje C# (For Each en Visual Basic) oculta la complejidad de los enumeradores. Por tanto, se recomienda el uso de foreach en lugar de manipular directamente el enumerador.

Los enumeradores se pueden utilizar para leer los datos de la colección, pero no para modificar la colección subyacente.

Inicialmente, el enumerador se coloca delante del primer elemento de la colección. El método Reset también devuelve el enumerador a esta posición. En dicha posición, la propiedad Current no está definida. Por lo tanto, se debe llamar al método MoveNext para desplazar el enumerador hasta el primer elemento de la colección antes de leer el valor de Current.

Current devuelve el mismo objeto hasta que se llama a MoveNext o a Reset. MoveNext establece el valor de Current en el siguiente elemento.

Si MoveNext pasa el final de la colección, el enumerador se coloca detrás del último elemento de la colección y MoveNext devuelve false. Cuando el enumerador está en esta posición, las llamadas posteriores al método MoveNext también devuelven el valor false. Si la última llamada al método MoveNext devuelve false, el valor de la propiedad Current queda sin definir. Para volver a establecer el valor de Current en el primer elemento de la colección, se puede llamar primero al método Reset y después al método MoveNext.

Un enumerador sigue siendo válido mientras la colección no cambie. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida definitivamente y tiene un comportamiento no definido.

El enumerador no tiene acceso exclusivo a la colección; por lo tanto, la enumeración a través de una colección es un procedimiento que, en esencia, no es seguro para la ejecución de subprocesos. Para garantizar la seguridad en la ejecución de subprocesos durante la enumeración, puede bloquear la colección durante la enumeración completa. Para permitir el acceso a la colección de varios subprocesos para leer y escribir, debe implementar su propia sincronización.

En el ejemplo de código siguiente se muestra la implementación de las interfaces IEnumerable para una colección personalizada. En este ejemplo, no se llama explícitamente a GetEnumerator, pero se implementa para admitir el uso de foreach (For Each en Visual Basic). Este ejemplo de código forma parte de un ejemplo más extenso de la interfaz IEnumerable.

public class People : IEnumerable
{
    private Person[] _people;
    public People(Person[] pArray)
    {
        _people = new Person[pArray.Length];

        for (int i = 0; i < pArray.Length; i++)
        {
            _people[i] = pArray[i];
        }
    }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return new PeopleEnum(_people);
        }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft