SortedList<TKey,TValue>.IDictionary.GetEnumerator Methode

Definitie

Retourneert een IDictionaryEnumerator voor de 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

Retouren

Een IDictionaryEnumerator voor de IDictionary.

Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de sleutel-/waardeparen in de gesorteerde lijst opsommen met behulp van de instructie foreach (For Each in Visual Basic), waardoor het gebruik van de enumerator wordt verborgen. Houd er met name rekening mee dat de enumerator voor de System.Collections.IDictionary interface objecten retourneert DictionaryEntry in plaats KeyValuePair<TKey,TValue> van objecten.

Het codevoorbeeld maakt deel uit van een groter voorbeeld, inclusief uitvoer, dat is opgegeven voor de IDictionary.Add methode.

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

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

        // Add some elements to the sorted list. 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 list of strings, with string keys,
        ' and access it using the IDictionary interface.
        '
        Dim openWith As IDictionary = _
            New sortedList(Of String, String)
        
        ' Add some elements to the sorted list. 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 sorted list 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 sorted list 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

Opmerkingen

De instructie foreach van de C#-taal (For Each in Visual Basic) verbergt de complexiteit van de opsommingen. Daarom wordt het gebruik foreach aanbevolen in plaats van de opsomming rechtstreeks te bewerken.

Enumerators kunnen worden gebruikt om de gegevens in de verzameling te lezen, maar ze kunnen niet worden gebruikt om de onderliggende verzameling te wijzigen.

In eerste instantie wordt de enumerator vóór het eerste element in de verzameling weergegeven. Reset brengt ook de enumerator terug naar deze positie. Op deze positie Entry is niet gedefinieerd. Daarom moet u de opsomming doorschakelen MoveNext naar het eerste element van de verzameling voordat u de waarde van Entry.

Entry retourneert hetzelfde object tot MoveNext of Reset wordt aangeroepen. MoveNext wordt ingesteld Entry op het volgende element.

Als MoveNext het einde van de verzameling wordt doorgegeven, wordt de enumerator geplaatst na het laatste element in de verzameling en MoveNext wordt het resultaat geretourneerd false. Wanneer de enumerator zich op deze positie bevindt, worden volgende aanroepen ook MoveNext geretourneerd false. Als de laatste aanroep die moet MoveNext worden geretourneerd false, Entry niet is gedefinieerd. Als u het eerste element van de verzameling opnieuw wilt instellenEntry, kunt u het volgende MoveNextaanroepenReset.

Een enumerator blijft geldig zolang de verzameling ongewijzigd blijft. Als er wijzigingen worden aangebracht in de verzameling, zoals het toevoegen, wijzigen of verwijderen van elementen, wordt de enumerator onherstelbaar ongeldig gemaakt en wordt de volgende aanroep naar MoveNext of Reset genereert een InvalidOperationException.

De enumerator heeft geen exclusieve toegang tot de verzameling; Daarom is het inventariseren via een verzameling intrinsiek geen thread-veilige procedure. Om de veiligheid van threads tijdens de inventarisatie te garanderen, kunt u de verzameling vergrendelen tijdens de gehele inventarisatie. Als u wilt toestaan dat de verzameling toegankelijk is voor meerdere threads voor lezen en schrijven, moet u uw eigen synchronisatie implementeren.

Standaard implementaties van verzamelingen in System.Collections.Generic worden niet gesynchroniseerd.

Deze methode is een O(1)-bewerking.

Van toepassing op

Zie ook