SortedList<TKey,TValue>.GetEnumerator Metod

Definition

Returnerar en uppräkning som itererar genom SortedList<TKey,TValue>.

public:
 System::Collections::Generic::IEnumerator<System::Collections::Generic::KeyValuePair<TKey, TValue>> ^ GetEnumerator();
public System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>> GetEnumerator();
member this.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<'Key, 'Value>>
Public Function GetEnumerator () As IEnumerator(Of KeyValuePair(Of TKey, TValue))

Returer

IEnumerator<KeyValuePair<TKey,TValue>>

En IEnumerator<T> typ KeyValuePair<TKey,TValue> för SortedList<TKey,TValue>.

Implementeringar

Kommentarer

foreach-instruktionen för C#-språket (For Each i Visual Basic) döljer uppräknarens komplexitet. Därför rekommenderas användning foreach i stället för att direkt manipulera uppräknaren.

Uppräknare kan användas för att läsa data i samlingen, men de kan inte användas för att ändra den underliggande samlingen.

Ordlistan underhålls i en sorterad ordning med hjälp av ett internt träd. Varje nytt element placeras vid rätt sorteringsposition och trädet justeras för att behålla sorteringsordningen när ett element tas bort. Sorteringsordningen bibehålls under uppräkning.

Inledningsvis placeras uppräknaren före det första elementet i samlingen. I det här läget Current är det odefinierat. Därför måste du anropa MoveNext för att flytta uppräknaren till det första elementet i samlingen innan du läser värdet Currentför .

Current returnerar samma objekt tills det anropas MoveNext . MoveNext anger Current till nästa element.

Om MoveNext skickar slutet av samlingen placeras uppräknaren efter det sista elementet i samlingen och MoveNext returnerar false. När uppräknaren befinner sig på den här positionen returnerar efterföljande anrop .MoveNextfalse Om det sista anropet som MoveNext returnerades Currentfalseär odefinierat. Du kan inte ange Current det första elementet i samlingen igen. Du måste skapa en ny uppräkningsinstans i stället.

En uppräkning förblir giltig så länge samlingen förblir oförändrad. Om ändringar görs i samlingen, till exempel att lägga till, ändra eller ta bort element, ogiltigförklaras uppräknaren oåterkalleligen och nästa anrop till MoveNext eller Reset genererar en InvalidOperationException.

Uppräknaren har inte exklusiv åtkomst till samlingen. Därför är uppräkning genom en samling i sig inte en trådsäker procedur. För att garantera trådsäkerheten under uppräkningen kan du låsa samlingen under hela uppräkningen. Om du vill att samlingen ska kunna nås av flera trådar för läsning och skrivning måste du implementera din egen synkronisering.

Standardimplementeringar av samlingar i System.Collections.Generic synkroniseras inte.

Den här metoden är en O(1)-åtgärd.

Gäller för

Se även