Dictionary<TKey,TValue>.KeyCollection.Enumerator Struktur
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menghitung elemen dari Dictionary<TKey,TValue>.KeyCollection.
public: value class Dictionary<TKey, TValue>::KeyCollection::Enumerator : System::Collections::Generic::IEnumerator<TKey>
public struct Dictionary<TKey,TValue>.KeyCollection.Enumerator : System.Collections.Generic.IEnumerator<TKey>
[System.Serializable]
public struct Dictionary<TKey,TValue>.KeyCollection.Enumerator : System.Collections.Generic.IEnumerator<TKey>
type Dictionary<'Key, 'Value>.KeyCollection.Enumerator = struct
interface IEnumerator<'Key>
interface IEnumerator
interface IDisposable
[<System.Serializable>]
type Dictionary<'Key, 'Value>.KeyCollection.Enumerator = struct
interface IEnumerator<'Key>
interface IDisposable
interface IEnumerator
Public Structure Dictionary(Of TKey, TValue).KeyCollection.Enumerator
Implements IEnumerator(Of TKey)
Jenis parameter
- TKey
- TValue
- Warisan
- Atribut
- Penerapan
Keterangan
Pernyataan foreach
bahasa C# (for each
dalam C++, For Each
di Visual Basic) menyembunyikan kompleksitas enumerator. Oleh karena itu, penggunaan foreach
disarankan, alih-alih secara langsung memanipulasi enumerator.
Enumerator dapat digunakan untuk membaca data dalam koleksi, tetapi tidak dapat digunakan untuk memodifikasi koleksi yang mendasar.
Awalnya, enumerator diposisikan sebelum elemen pertama dalam koleksi. Pada posisi ini, Current tidak terdefinisi. Anda harus memanggil MoveNext untuk memajukan enumerator ke elemen pertama koleksi sebelum membaca nilai Current.
Current mengembalikan objek yang sama hingga MoveNext dipanggil. MoveNextCurrent diatur ke elemen berikutnya.
Jika MoveNext melewati akhir koleksi, enumerator diposisikan setelah elemen terakhir dalam koleksi dan MoveNext mengembalikan false
. Ketika enumerator berada di posisi ini, panggilan berikutnya untuk MoveNext juga mengembalikan false
. Jika panggilan terakhir untuk MoveNext dikembalikan false
, Current tidak terdefinis. Anda tidak dapat mengatur Current ke elemen pertama koleksi lagi; Anda harus membuat instans enumerator baru sebagai gantinya.
Enumerator tetap valid selama koleksi tetap tidak berubah. Jika perubahan dilakukan pada koleksi, seperti menambahkan elemen atau mengubah kapasitas, enumerator tidak dapat dipulihkan dan panggilan berikutnya ke MoveNext atau IEnumerator.Reset melemparkan InvalidOperationException.
Hanya .NET Core 3.0+: Satu-satunya metode bermutasi yang tidak membatalkan enumerator adalah Remove dan Clear.
Enumerator tidak memiliki akses eksklusif ke koleksi; oleh karena itu, menghitung melalui koleksi secara intrinsik bukan prosedur aman utas. Untuk menjamin keamanan utas selama enumerasi, Anda dapat mengunci koleksi selama seluruh enumerasi. Untuk memungkinkan koleksi diakses oleh beberapa utas untuk membaca dan menulis, Anda harus menerapkan sinkronisasi Anda sendiri.
Implementasi default koleksi di tidak disinkronkan System.Collections.Generic .
Properti
Current |
Mendapatkan elemen pada posisi enumerator saat ini. |
Metode
Dispose() |
Merilis semua sumber daya yang Dictionary<TKey,TValue>.KeyCollection.Enumeratordigunakan oleh . |
MoveNext() |
Memajukan enumerator ke elemen berikutnya dari Dictionary<TKey,TValue>.KeyCollection. |
Implementasi Antarmuka Eksplisit
IEnumerator.Current |
Mendapatkan elemen pada posisi enumerator saat ini. |
IEnumerator.Reset() |
Mengatur enumerator ke posisi awalnya, yaitu sebelum elemen pertama dalam koleksi. |