ResourceSet.GetEnumerator Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt einen IDictionaryEnumerator zurück, der durch die ResourceSetdurchlaufen kann.
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
Gibt zurück
Ein IDictionaryEnumerator für diese ResourceSet.
- Attribute
Ausnahmen
Der Ressourcensatz wurde geschlossen oder verworfen.
Beispiele
Im folgenden Beispiel wird das Erstellen einer ResourceSetrs
für die Datei items.resources
veranschaulicht. Als Nächstes wird die GetEnumerator-Methode verwendet, um eine IDictionaryEnumerator für rs
zu erstellen. Die IDictionaryEnumerator durchläuft rs
und zeigt den Inhalt der Konsole an.
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
Hinweise
Enumeratoren erlauben nur das Lesen der Daten in der Sammlung. Enumeratoren können nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.
Zunächst wird der Enumerator vor dem ersten Element in der Auflistung positioniert. Reset bringt den Enumerator auch an diese Position zurück. An dieser Position löst das Aufrufen Current eine Ausnahme aus. Daher müssen Sie MoveNext aufrufen, um den Enumerator zum ersten Element der Auflistung zu wechseln, bevor Sie den Wert von Currentlesen.
Current gibt dasselbe Objekt zurück, bis entweder MoveNext oder Reset aufgerufen wird. MoveNext legt Current auf das nächste Element fest.
Nachdem das Ende der Auflistung übergeben wurde, wird der Enumerator nach dem letzten Element in der Auflistung positioniert, und der Aufruf MoveNext gibt false
zurück. Wenn der letzte Aufruf von MoveNextfalse
zurückgegeben wurde, löst das Aufrufen Current eine Ausnahme aus. Wenn Sie Current erneut auf das erste Element der Auflistung festlegen möchten, können Sie Reset gefolgt von MoveNextaufrufen.
Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt. Wenn Änderungen an der Auflistung vorgenommen werden, z. B. das Hinzufügen, Ändern oder Löschen von Elementen, wird der Enumerator unwiederbringlich ungültig und der nächste Aufruf von MoveNext oder Reset löst eine InvalidOperationExceptionaus. Wenn die Auflistung zwischen MoveNext und Currentgeändert wird, gibt Current das Element zurück, auf das sie festgelegt ist, auch wenn der Enumerator bereits ungültig ist.
Mit der IDictionaryEnumerator.Entry-Eigenschaft können Sie auf den im aktuellen Element gespeicherten Wert zugreifen. Verwenden Sie die IDictionaryEnumerator.Key-Eigenschaft, um auf den Schlüssel des aktuellen Elements zuzugreifen. Verwenden Sie die IDictionaryEnumerator.Value-Eigenschaft, um auf den Wert des aktuellen Elements zuzugreifen.
Der Enumerator hat keinen exklusiven Zugriff auf die Sammlung; Daher ist das Aufzählen durch eine Sammlung intrinsisch keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, könnten andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden.