ResourceSet.GetEnumerator 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回可逐一查看 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
傳回
這個 ResourceSet的 IDictionaryEnumerator。
- 屬性
例外狀況
資源集已關閉或處置。
範例
下列範例示範如何為檔案 items.resources
建立 ResourceSetrs
。 接下來,會使用 GetEnumerator 方法來建立 rs
的 IDictionaryEnumerator。
IDictionaryEnumerator 逐一查看 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 會擲回例外狀況。 因此,您必須先呼叫 MoveNext,才能將列舉值移至集合的第一個專案,然後再讀取 Current的值。
Current 會傳回相同的物件,直到呼叫 MoveNext 或 Reset 為止。 MoveNext 會將 Current 設定為下一個專案。
傳遞集合結尾之後,列舉值會位於集合中的最後一個項目之後,而呼叫 MoveNext 會傳回 false
。 如果最後一次呼叫 MoveNext 傳回 false
,則呼叫 Current 會擲回例外狀況。 若要再次將 Current 設定為集合的第一個專案,您可以呼叫 Reset,後面接著 MoveNext。
只要集合維持不變,列舉值會維持有效狀態。 如果對集合進行變更,例如新增、修改或刪除專案,列舉值會無法復原地失效,且下一次呼叫 MoveNext 或 Reset 會擲回 InvalidOperationException。 如果集合在 MoveNext 和 Current之間修改,Current 會傳回它設定為的專案,即使列舉值已經失效也一樣。
您可以使用 IDictionaryEnumerator.Entry 屬性來存取儲存在目前專案中的值。 使用 IDictionaryEnumerator.Key 屬性來存取目前專案的索引鍵。 使用 IDictionaryEnumerator.Value 屬性來存取目前專案的值。
列舉值沒有集合的獨佔存取權;因此,透過集合列舉本質上不是安全線程的程式。 即使集合同步處理,其他線程仍然可以修改集合,這會導致列舉值擲回例外狀況。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合,或攔截其他線程所做的變更所產生的例外狀況。