ResourceSet.GetEnumerator メソッド

定義

ResourceSetを反復処理できる IDictionaryEnumerator を返します。

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

戻り値

この ResourceSetIDictionaryEnumerator

属性

例外

リソース セットが閉じられたか破棄されました。

次の例では、ファイル items.resourcesResourceSetrs を作成する方法を示します。 次に、GetEnumerator メソッドを使用して、rsIDictionaryEnumerator を作成します。 IDictionaryEnumeratorrs を反復処理し、内容をコンソールに表示します。

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

注釈

列挙子は、コレクション内のデータの読み取りのみを許可します。 列挙子を使用して基になるコレクションを変更することはできません。

最初は、列挙子はコレクション内の最初の要素の前に配置されます。 Reset 列挙子もこの位置に戻します。 この位置で、Current を呼び出すと例外がスローされます。 したがって、Currentの値を読み取る前に、MoveNext を呼び出して列挙子をコレクションの最初の要素に進める必要があります。

Current は、MoveNext または Reset が呼び出されるまで、同じオブジェクトを返します。 MoveNext Current を次の要素に設定します。

コレクションの末尾が渡されると、列挙子はコレクション内の最後の要素の後に配置され、MoveNext を呼び出すと falseが返されます。 MoveNext の最後の呼び出しが false返された場合、Current 呼び出しは例外をスローします。 Current をコレクションの最初の要素に再度設定するには、Reset を呼び出し、その後に MoveNextを呼び出します。

列挙子は、コレクションが変更されない限り有効なままです。 要素の追加、変更、削除など、コレクションに変更が加えられた場合、列挙子は回復不能に無効になり、次に MoveNext または Reset を呼び出すと、InvalidOperationExceptionがスローされます。 コレクションが MoveNextCurrentの間で変更された場合、列挙子が既に無効になっている場合でも、Current は設定されている要素を返します。

IDictionaryEnumerator.Entry プロパティを使用して、現在の要素に格納されている値にアクセスできます。 IDictionaryEnumerator.Key プロパティを使用して、現在の要素のキーにアクセスします。 現在の要素の値にアクセスするには、IDictionaryEnumerator.Value プロパティを使用します。

列挙子は、コレクションへの排他的アクセス権を持っていません。したがって、コレクションを通じた列挙は、本質的にスレッド セーフなプロシージャではありません。 コレクションが同期されている場合でも、他のスレッドがコレクションを変更して、列挙子が例外をスローする可能性があります。 列挙中のスレッド セーフを保証するには、列挙全体の間にコレクションをロックするか、他のスレッドによって行われた変更によって発生する例外をキャッチします。

適用対象