Stack<T>.Enumerator Yapı

Tanım

öğesinin öğelerini Stack<T>numaralandırır.

public: value class Stack<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public struct Stack<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
[System.Serializable]
public struct Stack<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
type Stack<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IEnumerator
    interface IDisposable
[<System.Serializable>]
type Stack<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IDisposable
    interface IEnumerator
Public Structure Stack(Of T).Enumerator
Implements IEnumerator(Of T)

Tür Parametreleri

T
Devralma
Stack<T>.Enumerator
Öznitelikler
Uygulamalar

Açıklamalar

C# dilinin foreach deyimi (Visual Basic'da For Each), 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 koleksiyondaki verileri okumak için kullanılabilir, ancak temel koleksiyonu değiştirmek için kullanılamaz.

Başlangıçta, numaralandırıcı koleksiyondaki ilk öğeden önce konumlandırılır. Bu konumda tanımlanmamıştır Current . Bu nedenle, değerini MoveNextokumadan önce numaralandırıcıyı koleksiyonun ilk öğesine ilerletmek için çağrısında Current 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 konumda olduğunda, sonraki çağrıları MoveNext da döndürür false. döndürülen MoveNextfalse son çağrı Current 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şmediği 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ı veya MoveNextIEnumerator.Reset oluşturur InvalidOperationException.

Numaralandırıcının koleksiyona özel erişimi yoktur; Bu nedenle, bir koleksiyon aracılığıyla numaralandırma, iş parçacığı açısından güvenli bir yordam değildir. Numaralandırma sırasında iş parçacığı güvenliğini garanti etmek için, tüm numaralandırma sırasında koleksiyonu kilitleyebilirsiniz. Koleksiyona okuma ve yazma için birden çok iş parçacığı tarafından erişilmesine izin vermek için kendi eşitlemenizi uygulamanız gerekir.

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

Özellikler

Name Description
Current

Öğesini numaralandırıcının geçerli konumunda alır.

Yöntemler

Name Description
Dispose()

tarafından Stack<T>.Enumeratorkullanılan tüm kaynakları serbest bırakır.

MoveNext()

Numaralandırıcıyı öğesinin sonraki öğesine ilerler Stack<T>.

Belirtik Arabirim Kullanımları

Name Description
IEnumerator.Current

Öğesini numaralandırıcının geçerli konumunda alır.

IEnumerator.Reset()

Numaralandırıcıyı, koleksiyondaki ilk öğeden önceki ilk konumuna ayarlar. Bu sınıf devralınamaz.

Şunlara uygulanır

Ayrıca bkz.