ResourceSet.GetEnumerator Metode
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.
Mengembalikan IDictionaryEnumerator yang dapat melakukan iterasi melalui ResourceSet.
public:
virtual System::Collections::IDictionaryEnumerator ^ GetEnumerator();
public virtual System.Collections.IDictionaryEnumerator GetEnumerator ();
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Collections.IDictionaryEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
override this.GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
override this.GetEnumerator : unit -> System.Collections.IDictionaryEnumerator
Public Overridable Function GetEnumerator () As IDictionaryEnumerator
Mengembalikan
IDictionaryEnumerator untuk ResourceSetini.
- Atribut
Pengecualian
Set sumber daya telah ditutup atau dibuang.
Contoh
Contoh berikut menunjukkan cara membuat ResourceSetrs
untuk file items.resources
. Selanjutnya, metode GetEnumerator digunakan untuk membuat IDictionaryEnumerator untuk rs
.
IDictionaryEnumerator berulang melalui rs
dan menampilkan konten ke konsol.
using namespace System;
using namespace System::Resources;
using namespace System::Collections;
int main()
{
// Create a ResourceSet for the file items.resources.
ResourceSet^ rs = gcnew ResourceSet( "items.resources" );
// Create an IDictionaryEnumerator* to read the data in the ResourceSet.
IDictionaryEnumerator^ id = rs->GetEnumerator();
// Iterate through the ResourceSet and display the contents to the console.
while ( id->MoveNext() )
Console::WriteLine( "\n [{0}] \t {1}", id->Key, id->Value );
rs->Close();
}
using System;
using System.Resources;
using System.Collections;
class EnumerateResources
{
public static void Main()
{
// Create a ResourceSet for the file items.resources.
ResourceSet rs = new ResourceSet("items.resources");
// Create an IDictionaryEnumerator to read the data in the ResourceSet.
IDictionaryEnumerator id = rs.GetEnumerator();
// Iterate through the ResourceSet and display the contents to the console.
while(id.MoveNext())
Console.WriteLine("\n[{0}] \t{1}", id.Key, id.Value);
rs.Close();
}
}
Imports System.Resources
Imports System.Collections
Class EnumerateResources
Public Shared Sub Main()
' Create a ResourceSet for the file items.resources.
Dim rs As New ResourceSet("items.resources")
' Create an IDictionaryEnumerator to read the data in the ResourceSet.
Dim id As IDictionaryEnumerator = rs.GetEnumerator()
' Iterate through the ResourceSet and display the contents to the console.
While id.MoveNext()
Console.WriteLine(ControlChars.NewLine + "[{0}] " + ControlChars.Tab + "{1}", id.Key, id.Value)
End While
rs.Close()
End Sub
End Class
Keterangan
Enumerator hanya memungkinkan membaca data dalam koleksi. Enumerator tidak dapat digunakan untuk mengubah koleksi yang mendasar.
Awalnya, enumerator diposisikan sebelum elemen pertama dalam koleksi. Reset juga membawa enumerator kembali ke posisi ini. Pada posisi ini, memanggil Current melemparkan pengecualian. Oleh karena itu, Anda harus memanggil MoveNext untuk memajukan enumerator ke elemen pertama koleksi sebelum membaca nilai Current.
Current mengembalikan objek yang sama hingga MoveNext atau Reset dipanggil. MoveNext mengatur Current ke elemen berikutnya.
Setelah akhir koleksi dilewatkan, enumerator diposisikan setelah elemen terakhir dalam koleksi, dan memanggil MoveNext mengembalikan false
. Jika panggilan terakhir ke MoveNext mengembalikan false
, memanggil Current melemparkan pengecualian. Untuk mengatur Current ke elemen pertama koleksi lagi, Anda dapat memanggil Reset diikuti dengan MoveNext.
Enumerator tetap valid selama koleksi tetap tidak berubah. Jika perubahan dilakukan pada koleksi, seperti menambahkan, memodifikasi, atau menghapus elemen, enumerator tidak valid dan panggilan berikutnya ke MoveNext atau Reset melemparkan InvalidOperationException. Jika koleksi dimodifikasi antara MoveNext dan Current, Current akan mengembalikan elemen yang diatur ke, bahkan jika enumerator sudah tidak valid.
Anda dapat menggunakan properti IDictionaryEnumerator.Entry untuk mengakses nilai yang disimpan dalam elemen saat ini. Gunakan properti IDictionaryEnumerator.Key untuk mengakses kunci elemen saat ini. Gunakan properti IDictionaryEnumerator.Value untuk mengakses nilai elemen saat ini.
Enumerator tidak memiliki akses eksklusif ke koleksi; oleh karena itu, menghitung melalui koleksi secara intrinsik bukan prosedur aman utas. Bahkan ketika koleksi disinkronkan, utas lain masih dapat memodifikasi koleksi, yang menyebabkan enumerator melemparkan pengecualian. Untuk menjamin keamanan utas selama enumerasi, Anda dapat mengunci koleksi selama seluruh enumerasi atau menangkap pengecualian yang dihasilkan dari perubahan yang dibuat oleh utas lain.