SortedList<TKey,TValue>.GetEnumerator Yöntem

Tanım

aracılığıyla SortedList<TKey,TValue>yineleyen bir numaralandırıcı döndürür.

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))

Döndürülenler

IEnumerator<KeyValuePair<TKey,TValue>>

IEnumerator<T> için SortedList<TKey,TValue>bir türKeyValuePair<TKey,TValue>.

Uygulamalar

Açıklamalar

foreach C# dilinin deyimi (for eachVisual Basic'te C++For Each'da) numaralandırıcıların karmaşıklığını gizler. Bu nedenle, numaralandırıcıyı doğrudan işlemek yerine kullanılması foreach önerilir.

Numaralandırıcılar, koleksiyonundaki verileri okumak için kullanılabilir, ancak temel koleksiyonu değiştirmek için kullanılamaz.

Sözlük, iç ağaç kullanılarak sıralı bir düzende tutulur. Her yeni öğe doğru sıralama konumunda konumlandırılır ve bir öğe kaldırıldığında ağaç sıralama düzenini koruyacak şekilde ayarlanır. Numaralandırma sırasında sıralama düzeni korunur.

Başlangıçta, numaralandırıcı, koleksiyondaki ilk öğenin önüne yerleştirilir. Bu konumda tanımlanmamıştır Current . Bu nedenle, değerini Currentokumadan önce numaralandırıcıyı koleksiyonun ilk öğesine ilerletmek için çağrısında MoveNext bulunmalısınız.

Current çağrılana kadar MoveNext aynı nesneyi döndürür. MoveNext bir sonraki öğeye ayarlar Current .

Koleksiyonun sonunu geçerse MoveNext , numaralandırıcı koleksiyondaki son öğeden sonra konumlandırılır ve MoveNext döndürür false. Numaralandırıcı bu konumdayken, sonraki çağrıları döndürmek falseiçin MoveNext . döndürülen falseCurrent son çağrı MoveNext tanımlanmamışsa. Koleksiyonun ilk öğesine yeniden ayarlayamazsınız Current ; bunun yerine yeni bir numaralandırıcı örneği oluşturmanız gerekir.

Bir numaralandırıcı, koleksiyon değişmeden kaldığı sürece geçerli kalır. Koleksiyonda öğe ekleme, değiştirme veya silme gibi değişiklikler yapılırsa, numaralandırıcı geri alınamaz şekilde geçersiz kılınmış olur ve bir sonraki çağrısı MoveNext veya Reset oluşturur InvalidOperationException.

Numaralandırıcının, koleksiyona özel kullanım erişimi yok; bu nedenle, bir koleksiyon içinde numaralandırma aslında bir iş parçacığı açısından güvenli yordam değildir. Numaralandırma sırasında iş parçacığı güvenliği sağlamak için tüm numaralandırma sırasında koleksiyonu kilitleyebilirsiniz. Okuma ve yazma için birden çok iş parçacığı tarafından erişilecek koleksiyona izin vermek için kendi eşitlemenizi uygulamalısınız.

içindeki System.Collections.Generic koleksiyonların varsayılan uygulamaları eşitlenmez.

Bu yöntem bir O(1) işlemidir.

Şunlara uygulanır

Ayrıca bkz.