ResourceSet.GetEnumerator 方法

定义

返回一个可循环访问 ResourceSetIDictionaryEnumerator

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.resources创建 ResourceSetrs。 接下来,GetEnumerator 方法用于为 rs创建 IDictionaryEnumeratorIDictionaryEnumerator 循环访问 rs,并向控制台显示内容。

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 返回相同的对象,直到调用 MoveNextResetMoveNextCurrent 设置为下一个元素。

传递集合末尾后,枚举器位于集合中的最后一个元素之后,调用 MoveNext 返回 false。 如果上次调用 MoveNext 返回 false,则调用 Current 将引发异常。 若要再次将 Current 设置为集合的第一个元素,可以调用 Reset 后跟 MoveNext

只要集合保持不变,枚举器就保持有效。 如果对集合进行了更改(如添加、修改或删除元素),则枚举器将不可恢复地失效,并且对 MoveNextReset 的下一次调用将引发 InvalidOperationException。 如果集合在 MoveNextCurrent之间修改,则 Current 将返回它设置为的元素,即使枚举器已失效。

可以使用 IDictionaryEnumerator.Entry 属性访问存储在当前元素中的值。 使用 IDictionaryEnumerator.Key 属性访问当前元素的键。 使用 IDictionaryEnumerator.Value 属性访问当前元素的值。

枚举器不具有对集合的独占访问权限;因此,通过集合进行枚举本质上不是线程安全的过程。 即使集合同步,其他线程仍可以修改集合,这会导致枚举器引发异常。 若要保证枚举期间的线程安全性,可以在整个枚举期间锁定集合,也可以捕获由其他线程所做的更改导致的异常。

适用于