Sdílet prostřednictvím


ResourceSet.GetEnumerator Metoda

Definice

Vrátí IDictionaryEnumerator, který může iterovat prostřednictvím 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

Návraty

IDictionaryEnumerator pro tento ResourceSet.

Atributy

Výjimky

Sada prostředků byla uzavřena nebo uvolněna.

Příklady

Následující příklad ukazuje, jak vytvořit ResourceSetrs pro soubor items.resources. Dále se metoda GetEnumerator používá k vytvoření IDictionaryEnumerator pro rs. IDictionaryEnumerator iteruje rs a zobrazí obsah konzoly.

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

Poznámky

Enumerátory umožňují čtení pouze dat v kolekci. Enumerátory nelze použít k úpravě podkladové kolekce.

Na začátku je enumerátor umístěn před prvním prvkem v kolekci. Reset také vrátí enumerátor do této pozice. V této pozici vyvolá volání Current vyvolá výjimku. Proto je nutné volat MoveNext přejít enumerátor na první prvek kolekce před čtením hodnoty Current.

Current vrátí stejný objekt, dokud se nevolá MoveNext nebo Reset. MoveNext nastaví Current na další prvek.

Po předání konce kolekce je enumerátor umístěn za posledním prvkem v kolekci a volání MoveNext vrátí false. Pokud poslední volání MoveNext vráceno false, volání Current vyvolá výjimku. Chcete-li nastavit Current na první prvek kolekce znovu, můžete volat Reset následované MoveNext.

Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, například přidání, úpravy nebo odstranění prvků, enumerátor je nenávratně neplatný a další volání MoveNext nebo Reset vyvolá InvalidOperationException. Pokud je kolekce změněna mezi MoveNext a Current, Current vrátí prvek, na který je nastaven, i když je enumerátor již neplatný.

Vlastnost IDictionaryEnumerator.Entry můžete použít pro přístup k hodnotě uložené v aktuálním prvku. Pro přístup ke klíči aktuálního prvku použijte vlastnost IDictionaryEnumerator.Key. Pro přístup k hodnotě aktuálního prvku použijte vlastnost IDictionaryEnumerator.Value.

Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.

Platí pro