Condividi tramite


ResourceSet.GetEnumerator Metodo

Definizione

Restituisce un IDictionaryEnumerator in grado di scorrere il 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

Restituisce

Un IDictionaryEnumerator per questo ResourceSet.

Attributi

Eccezioni

Il set di risorse è stato chiuso o eliminato.

Esempio

Nell'esempio seguente viene illustrato come creare un ResourceSetrs per il file items.resources. Viene quindi usato il metodo GetEnumerator per creare un IDictionaryEnumerator per rs. Il IDictionaryEnumerator scorre rs e visualizza il contenuto della 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

Commenti

Gli enumeratori consentono solo la lettura dei dati nella raccolta. Non è possibile utilizzare enumeratori per modificare la raccolta sottostante.

Inizialmente, l'enumeratore viene posizionato prima del primo elemento della raccolta. Reset riporta anche l'enumeratore in questa posizione. In questa posizione, la chiamata a Current genera un'eccezione. Pertanto, è necessario chiamare MoveNext per far avanzare l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.

Current restituisce lo stesso oggetto finché non viene chiamato MoveNext o Reset. MoveNext imposta Current sull'elemento successivo.

Dopo aver passato la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e la chiamata di MoveNext restituisce false. Se l'ultima chiamata a MoveNext restituita false, la chiamata a Current genera un'eccezione. Per impostare di nuovo Current sul primo elemento della raccolta, è possibile chiamare Reset seguito da MoveNext.

Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato in modo irreversibile e la chiamata successiva a MoveNext o Reset genera un InvalidOperationException. Se la raccolta viene modificata tra MoveNext e Current, Current restituirà l'elemento su cui è impostato, anche se l'enumeratore è già invalidato.

È possibile utilizzare la proprietà IDictionaryEnumerator.Entry per accedere al valore archiviato nell'elemento corrente. Utilizzare la proprietà IDictionaryEnumerator.Key per accedere alla chiave dell'elemento corrente. Utilizzare la proprietà IDictionaryEnumerator.Value per accedere al valore dell'elemento corrente.

L'enumeratore non ha accesso esclusivo alla raccolta; pertanto, l'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread potrebbero comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.

Si applica a