ResourceSet.GetEnumerator Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí IDictionaryEnumerator, který může iterovat prostřednictvím 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
Návraty
IDictionaryEnumerator pro tento ResourceSet.
- Atributy
Výjimky
Sada prostředků byla uzavřena nebo uvolněna.
Příklady
Následující příklad ukazuje, jak vytvořit ResourceSetrs
pro soubor items.resources
. Dále se metoda GetEnumerator používá k vytvoření IDictionaryEnumerator pro rs
.
IDictionaryEnumerator iteruje rs
a zobrazí obsah konzoly.
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
Poznámky
Enumerátory umožňují čtení pouze dat v kolekci. Enumerátory nelze použít k úpravě podkladové kolekce.
Na začátku je enumerátor umístěn před prvním prvkem v kolekci. Reset také vrátí enumerátor do této pozice. V této pozici vyvolá volání Current vyvolá výjimku. Proto je nutné volat MoveNext přejít enumerátor na první prvek kolekce před čtením hodnoty Current.
Current vrátí stejný objekt, dokud se nevolá MoveNext nebo Reset. MoveNext nastaví Current na další prvek.
Po předání konce kolekce je enumerátor umístěn za posledním prvkem v kolekci a volání MoveNext vrátí false
. Pokud poslední volání MoveNext vráceno false
, volání Current vyvolá výjimku. Chcete-li nastavit Current na první prvek kolekce znovu, můžete volat Reset následované MoveNext.
Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, například přidání, úpravy nebo odstranění prvků, enumerátor je nenávratně neplatný a další volání MoveNext nebo Reset vyvolá InvalidOperationException. Pokud je kolekce změněna mezi MoveNext a Current, Current vrátí prvek, na který je nastaven, i když je enumerátor již neplatný.
Vlastnost IDictionaryEnumerator.Entry můžete použít pro přístup k hodnotě uložené v aktuálním prvku. Pro přístup ke klíči aktuálního prvku použijte vlastnost IDictionaryEnumerator.Key. Pro přístup k hodnotě aktuálního prvku použijte vlastnost IDictionaryEnumerator.Value.
Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.