Hashtable.IEnumerable.GetEnumerator Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar en uppräknare som itererar genom en samling.
virtual System::Collections::IEnumerator ^ System.Collections.IEnumerable.GetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator();
abstract member System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
override this.System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
Function GetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator
Returer
En IEnumerator som kan användas för att iterera genom samlingen.
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.
Inledningsvis placeras uppräknaren före det första elementet i samlingen. Reset tar också uppräknaren tillbaka till den här positionen. I det här läget utlöser anrop Current ett undantag. 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 antingen MoveNext eller Reset anropas. 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 falseefterföljande anrop MoveNext även . Om det senaste anropet till MoveNext returnerade falseutlöser anropet Current ett undantag. Om du vill ange Current till det första elementet i samlingen igen kan du anropa Reset följt av MoveNext.
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, kan uppräknaren ogiltigförklaras och nästa anrop till MoveNext eller Reset genererar en InvalidOperationException. Om samlingen ändras mellan MoveNext och CurrentCurrent returnerar det element som den är inställd på, även om uppräknaren redan är ogiltig.
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. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.
Den här metoden är en O(1) åtgärd.