Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Dictionary<TKey, TValue>.IDictionary.GetEnumerator-Methode ()

 

Gibt einen IDictionaryEnumerator für das IDictionary zurück.

Namespace:   System.Collections.Generic
Assembly:  mscorlib (in mscorlib.dll)

IDictionaryEnumerator IDictionary.GetEnumerator()

Bei der Enumeration wird jedes Element ist eine KeyValuePair<TKey, TValue> -Struktur, die einen Wert und den zugehörigen Schlüssel darstellt.

Die foreach -Anweisung in c# (for each in C++ For Each in Visual Basic) verbirgt die Komplexität der Enumeratoren.Daher empfiehlt es sich, foreach zu verwenden und den Enumerator nicht direkt zu ändern.

Mit Enumeratoren können die Daten in der Auflistung zwar gelesen, jedoch nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.

Zu Beginn wird der Enumerator vor das erste Element in der Auflistung positioniert.Die Reset -Methode fügt auch den Enumerator wieder an dieser Position.An dieser Position der Entry -Eigenschaft ist nicht definiert.Sie müssen daher Aufrufen der MoveNext -Methode, um den Enumerator auf das erste Element der Auflistung vor dem Lesen des Werts von Entry.

Die Entry -Eigenschaft gibt dasselbe Element zurück, bis entweder die MoveNext oder Reset wird aufgerufen. MoveNext legt Entry auf das nächste Element fest.

Wenn MoveNext übergibt, wird am Ende der Auflistung der Enumerator hinter dem letzten Element in der Auflistung positioniert, und MoveNext gibt false.Wann wird der Enumerator an dieser Position nachfolgende Aufrufe von MoveNext auch zurückgeben false.Wenn der letzte Aufruf MoveNext zurückgegebene false, Entry ist nicht definiert.Um Entry wieder auf das erste Element der Auflistung festzulegen, können Sie Reset gefolgt von MoveNext aufrufen.

Ein Enumerator bleibt gültig, solange die Auflistung unverändert ist.Werden an der Auflistung Änderungen wie z. B. Hinzufügen, Bearbeiten oder Entfernen von Elementen vorgenommen, verliert der Enumerator unwiederbringlich seine Gültigkeit und sein Verhalten ist nicht definiert.

Der Enumerator hat keinen exklusiven Zugriff auf die Auflistung; daher ist die Enumeration einer Auflistung systembedingt kein threadsicheres Verfahren.Um während der Enumeration Threadsicherheit zu garantieren, können Sie die Auflistung während der gesamten Enumeration sperren.Um den Lese- und Schreibzugriff auf diese Auflistung durch mehrere Threads zuzulassen, müssen Sie eine eigene Synchronisierung implementieren.

Standardimplementierungen der Auflistungen im System.Collections.Generic-Namespace werden nicht synchronisiert.

Diese Methode ist eine o(1)-Operation.

Im folgenden Codebeispiel wird veranschaulicht, wie die Schlüssel-Wert-Paare im Wörterbuch mithilfe der foreach Anweisung (For Each in Visual Basic for each in C++), der die Verwendung des Enumerators verborgen.Beachten Sie insbesondere, dass der Enumerator für die System.Collections.IDictionary Schnittstelle gibt DictionaryEntry Objekte statt KeyValuePair<TKey, TValue> Objekte.

Das Codebeispiel ist Teil eines größeren Beispiels, einschließlich Ausgaben für die IDictionary.Add Methode.

using System;
using System.Collections;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new dictionary of strings, with string keys,
        // and access it using the IDictionary interface.
        //
        IDictionary openWith = new Dictionary<string, string>();

        // Add some elements to the dictionary. There are no 
        // duplicate keys, but some of the values are duplicates.
        // IDictionary.Add throws an exception if incorrect types
        // are supplied for key or value.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");
// When you use foreach to enumerate dictionary elements
// with the IDictionary interface, the elements are retrieved
// as DictionaryEntry objects instead of KeyValuePair objects.
Console.WriteLine();
foreach( DictionaryEntry de in openWith )
{
    Console.WriteLine("Key = {0}, Value = {1}", 
        de.Key, de.Value);
}

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 2.0
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: