Freigeben über


SortedDictionary<TKey,TValue>.IDictionary.GetEnumerator Methode

Definition

Gibt einen IDictionaryEnumerator Wert für das IDictionary.

 virtual System::Collections::IDictionaryEnumerator ^ System.Collections.IDictionary.GetEnumerator() = System::Collections::IDictionary::GetEnumerator;
System.Collections.IDictionaryEnumerator IDictionary.GetEnumerator();
abstract member System.Collections.IDictionary.GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
override this.System.Collections.IDictionary.GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
Function GetEnumerator () As IDictionaryEnumerator Implements IDictionary.GetEnumerator

Gibt zurück

Ein IDictionaryEnumerator für das IDictionary.

Implementiert

Beispiele

Das folgende Codebeispiel zeigt, wie die Schlüssel-Wert-Paare im Wörterbuch mithilfe der foreach Anweisung (For Each in Visual Basic) aufgezählt werden, wodurch die Verwendung des Enumerators ausgeblendet wird. Beachten Sie insbesondere, dass der Enumerator für die System.Collections.IDictionary Schnittstelle Objekte und nicht KeyValuePair<TKey,TValue> Objekte zurückgibtDictionaryEntry.

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

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

public class Example
{
    public static void Main()
    {
        // Create a new sorted dictionary of strings, with string keys,
        // and access it using the IDictionary interface.
        //
        IDictionary openWith = new SortedDictionary<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");
Imports System.Collections
Imports System.Collections.Generic

Public Class Example
    
    Public Shared Sub Main() 

        ' Create a new sorted dictionary of strings, with string keys,
        ' and access it using the IDictionary interface.
        '
        Dim openWith As IDictionary = _
            New SortedDictionary(Of 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);
}
' 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()
For Each de As DictionaryEntry In openWith
    Console.WriteLine("Key = {0}, Value = {1}", _
        de.Key, de.Value)
Next
    }
}

    End Sub

End Class

Hinweise

Für Aufzählungszwecke ist jedes Element eine DictionaryEntry Struktur.

Die foreach Anweisung der C#-Sprache (For Each in Visual Basic) blendet die Komplexität von Enumerationen aus. Daher wird die Verwendung foreach empfohlen, anstatt den Enumerator direkt zu bearbeiten.

Enumeratoren können verwendet werden, um die Daten in der Auflistung zu lesen, aber sie können nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.

Zunächst wird der Enumerator vor dem ersten Element in der Auflistung positioniert. Die Reset Methode bringt den Enumerator auch an diese Position zurück. An dieser Position Entry ist nicht definiert. Daher müssen Sie die MoveNext Methode aufrufen, um den Enumerator vor dem Lesen des Werts Entryzum ersten Element der Auflistung zu wechseln.

Die Entry Eigenschaft gibt dasselbe Objekt zurück, bis eine MoveNext oder Reset mehrere Aufrufe ausgeführt werden. MoveNext wird auf das nächste Element festgelegt Entry .

Wenn MoveNext das Ende der Auflistung übergeben wird, wird der Enumerator nach dem letzten Element in der Auflistung positioniert und MoveNext zurückgegeben false. Wenn sich der Enumerator an dieser Position befindet, werden nachfolgende Aufrufe MoveNext zurückgegeben false. Wenn der letzte zurückgegebene falseEntry Aufruf MoveNext nicht definiert ist. Wenn Sie das erste Element der Auflistung erneut festlegen möchten Entry , können Reset Sie gefolgt von MoveNext.

Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt. Wenn Änderungen an der Auflistung vorgenommen werden, z. B. Hinzufügen, Ändern oder Löschen von Elementen, wird der Enumerator unwiderruflich ungültig und der nächste Aufruf an MoveNext oder Reset löst einen InvalidOperationException.

Der Enumerator hat keinen exklusiven Zugriff auf die Sammlung; Daher ist das Aufzählen durch eine Sammlung intrinsisch keine threadsichere Prozedur. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Sammlung während der gesamten Enumeration sperren. Damit auf die Sammlung über mehrere Threads zum Lesen und Schreiben zugegriffen werden kann, müssen Sie eine eigene Synchronisierung implementieren.

Standardimplementierungen von Auflistungen im System.Collections.Generic Namespace werden nicht synchronisiert.

Bei dieser Methode handelt es sich um einen O(Log n)-Vorgang, bei dem n eine Reihe von Elementen in einer Auflistung ist.

Gilt für:

Weitere Informationen