ResourceSet.GetEnumerator Método

Definición

Devuelve una interfaz IDictionaryEnumerator que puede recorrer en iteración el ResourceSet.Returns an IDictionaryEnumerator that can iterate through the ResourceSet.

public:
 virtual System::Collections::IDictionaryEnumerator ^ GetEnumerator();
public virtual System.Collections.IDictionaryEnumerator GetEnumerator ();
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Collections.IDictionaryEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
override this.GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
override this.GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
Public Overridable Function GetEnumerator () As IDictionaryEnumerator

Devoluciones

IDictionaryEnumerator

Interfaz IDictionaryEnumerator correspondiente a esta ResourceSet.An IDictionaryEnumerator for this ResourceSet.

Atributos

Excepciones

El conjunto de recursos se ha cerrado o se ha eliminado.The resource set has been closed or disposed.

Ejemplos

En el ejemplo siguiente se muestra cómo crear un ResourceSet rs para el archivo items.resources .The following example demonstrates how to create a ResourceSetrs for the file items.resources. A continuación, GetEnumerator se usa el método para crear un IDictionaryEnumerator para rs .Next, the GetEnumerator method is used to create an IDictionaryEnumerator for rs. IDictionaryEnumeratorRecorre en iteración rs y muestra el contenido en la consola.The IDictionaryEnumerator iterates through rs and displays the contents to the console.

using namespace System;
using namespace System::Resources;
using namespace System::Collections;
int main()
{
   
   // Create a ResourceSet for the file items.resources.
   ResourceSet^ rs = gcnew ResourceSet( "items.resources" );
   
   // Create an IDictionaryEnumerator* to read the data in the ResourceSet.
   IDictionaryEnumerator^ id = rs->GetEnumerator();
   
   // Iterate through the ResourceSet and display the contents to the console.
   while ( id->MoveNext() )
      Console::WriteLine( "\n [{0}] \t {1}", id->Key, id->Value );

   rs->Close();
}

using System;
using System.Resources;
using System.Collections;

class EnumerateResources 
{
    public static void Main() 
    {
        // Create a ResourceSet for the file items.resources.
        ResourceSet rs = new ResourceSet("items.resources"); 

        // Create an IDictionaryEnumerator to read the data in the ResourceSet.
        IDictionaryEnumerator id = rs.GetEnumerator(); 

        // Iterate through the ResourceSet and display the contents to the console. 
        while(id.MoveNext())
          Console.WriteLine("\n[{0}] \t{1}", id.Key, id.Value); 

        rs.Close();
    }
}
Imports System.Resources
Imports System.Collections

Class EnumerateResources
   
   Public Shared Sub Main()
      ' Create a ResourceSet for the file items.resources.
      Dim rs As New ResourceSet("items.resources")      
      
      ' Create an IDictionaryEnumerator to read the data in the ResourceSet.
      Dim id As IDictionaryEnumerator = rs.GetEnumerator()
      
      ' Iterate through the ResourceSet and display the contents to the console. 
      While id.MoveNext()
         Console.WriteLine(ControlChars.NewLine + "[{0}] " + ControlChars.Tab + "{1}", id.Key, id.Value)
      End While 

      rs.Close()

   End Sub

End Class

Comentarios

Los enumeradores solo permiten leer los datos de la colección.Enumerators only allow reading the data in the collection. Los enumeradores no se pueden usar para modificar la colección subyacente.Enumerators cannot be used to modify the underlying collection.

En principio, el enumerador se coloca antes del primer elemento de la colección.Initially, the enumerator is positioned before the first element in the collection. Reset también devuelve el enumerador a esta posición.Reset also brings the enumerator back to this position. En esta posición, al llamar a se Current produce una excepción.At this position, calling Current throws an exception. Por lo tanto, debe llamar a MoveNext para adelantar el enumerador hasta el primer elemento de la colección antes de leer el valor de Current.Therefore, you must call MoveNext to advance the enumerator to the first element of the collection before reading the value of Current.

Current devuelve el mismo objeto hasta que se llama a MoveNext o a Reset.Current returns the same object until either MoveNext or Reset is called. MoveNext establece Current en el siguiente elemento.MoveNext sets Current to the next element.

Cuando se pasa el final de la colección, el enumerador se coloca detrás del último elemento de la colección y si se llama al método MoveNext devuelve false.After the end of the collection is passed, the enumerator is positioned after the last element in the collection, and calling MoveNext returns false. Si la última llamada a MoveNext devolvió false , la llamada a Current produce una excepción.If the last call to MoveNext returned false, calling Current throws an exception. Para volver a establecer el valor de Current en el primer elemento de la colección, se puede llamar primero a Reset y después a MoveNext.To set Current to the first element of the collection again, you can call Reset followed by MoveNext.

Un enumerador sigue siendo válido mientras la colección permanezca inalterada.An enumerator remains valid as long as the collection remains unchanged. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador queda invalidado de forma irrecuperable y la siguiente llamada a MoveNext o Reset produce una InvalidOperationException.If changes are made to the collection, such as adding, modifying or deleting elements, the enumerator is irrecoverably invalidated and the next call to MoveNext or Reset throws an InvalidOperationException. Si la colección se modifica entre MoveNext y Current, Current devolverá el elemento en el que está establecido, aunque el enumerador ya haya quedado invalidado.If the collection is modified between MoveNext and Current, Current will return the element that it is set to, even if the enumerator is already invalidated.

Puede utilizar la IDictionaryEnumerator.Entry propiedad para tener acceso al valor almacenado en el elemento actual.You can use the IDictionaryEnumerator.Entry property to access the value stored in the current element. Utilice la IDictionaryEnumerator.Key propiedad para tener acceso a la clave del elemento actual.Use the IDictionaryEnumerator.Key property to access the key of the current element. Utilice la IDictionaryEnumerator.Value propiedad para tener acceso al valor del elemento actual.Use the IDictionaryEnumerator.Value property to access the value of the current element.

El enumerador no tiene acceso exclusivo a la colección y, por tanto, la enumeración en una colección no es intrínsicamente un procedimiento seguro para subprocesos.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure. Incluso cuando una colección está sincronizada, otros subprocesos pueden modificar la colección, lo que hace que el enumerador produzca una excepción.Even when a collection is synchronized, other threads could still modify the collection, which causes the enumerator to throw an exception. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Se aplica a