ResourceSet.GetEnumerator Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca IDictionaryEnumerator, które mogą iterować przez 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
Zwraca
IDictionaryEnumerator dla tego ResourceSet.
- Atrybuty
Wyjątki
Zestaw zasobów został zamknięty lub usunięty.
Przykłady
W poniższym przykładzie pokazano, jak utworzyć ResourceSetrs
dla pliku items.resources
. Następnie metoda GetEnumerator służy do tworzenia IDictionaryEnumerator dla rs
.
IDictionaryEnumerator iteruje przez rs
i wyświetla zawartość konsoli.
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
Uwagi
Moduły wyliczające zezwalają tylko na odczytywanie danych w kolekcji. Moduły wyliczania nie mogą być używane do modyfikowania podstawowej kolekcji.
Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem w kolekcji. Reset również przywraca moduł wyliczający do tej pozycji. Na tym stanowisku wywołanie Current zgłasza wyjątek. W związku z tym należy wywołać MoveNext, aby przejść do pierwszego elementu kolekcji przed odczytaniem wartości Current.
Current zwraca ten sam obiekt do momentu wywołania MoveNext lub Reset. MoveNext ustawia Current na następny element.
Po przekazaniu końca kolekcji moduł wyliczający jest umieszczony po ostatnim elemenie w kolekcji, a wywołanie metody MoveNext zwraca wartość false
. Jeśli ostatnie wywołanie MoveNext zwróciło false
, wywołanie metody Current zgłasza wyjątek. Aby ponownie ustawić Current na pierwszy element kolekcji, możesz wywołać Reset, a następnie MoveNext.
Moduł wyliczający pozostaje prawidłowy, o ile kolekcja pozostaje niezmieniona. Jeśli zmiany w kolekcji, takie jak dodawanie, modyfikowanie lub usuwanie elementów, moduł wyliczający jest nieodwracalnie unieważniany, a następne wywołanie MoveNext lub Reset zgłasza InvalidOperationException. Jeśli kolekcja zostanie zmodyfikowana między MoveNext a Current, Current zwróci element ustawiony na , nawet jeśli moduł wyliczający jest już unieważniony.
Możesz użyć właściwości IDictionaryEnumerator.Entry, aby uzyskać dostęp do wartości przechowywanej w bieżącym elemencie. Użyj właściwości IDictionaryEnumerator.Key, aby uzyskać dostęp do klucza bieżącego elementu. Użyj właściwości IDictionaryEnumerator.Value, aby uzyskać dostęp do wartości bieżącego elementu.
Moduł wyliczający nie ma wyłącznego dostępu do kolekcji; w związku z tym wyliczanie za pośrednictwem kolekcji nie jest wewnętrznie procedurą bezpieczną wątkowo. Nawet w przypadku synchronizacji kolekcji inne wątki mogą nadal modyfikować kolekcję, co powoduje zgłoszenie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, możesz zablokować kolekcję podczas całego wyliczenia lub przechwycić wyjątki wynikające ze zmian wprowadzonych przez inne wątki.