LinkedList<T>.Enumerator 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
列舉 LinkedList<T>的專案。
public: value class LinkedList<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public: value class LinkedList<T>::Enumerator : System::Collections::Generic::IEnumerator<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public struct LinkedList<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
public struct LinkedList<T>.Enumerator : System.Collections.Generic.IEnumerator<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public struct LinkedList<T>.Enumerator : System.Collections.Generic.IEnumerator<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
interface IDeserializationCallback
interface ISerializable
[<System.Serializable>]
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IDisposable
interface IEnumerator
interface ISerializable
interface IDeserializationCallback
Public Structure LinkedList(Of T).Enumerator
Implements IEnumerator(Of T)
Public Structure LinkedList(Of T).Enumerator
Implements IDeserializationCallback, IEnumerator(Of T), ISerializable
類型參數
- T
- 繼承
- 屬性
- 實作
備註
C# 語言的 foreach 陳述(Visual Basic 中為 For Each)隱藏了列舉器的複雜性。 因此,建議使用 foreach ,而非直接操作列舉器。
列舉器可用於讀取集合中的資料,但無法用來修改底層集合。
最初,列舉器會被放置在集合中的第一個元素之前。 在此位置, Current 未定義。 因此,您必須先呼叫 MoveNext 列舉器先將列舉器推進到集合的第一個元素,再讀取 的 Current值。
Current 回傳相同的物件直到 MoveNext 被呼叫為止。 MoveNext 設定 Current 為下一個元素。
若 MoveNext 通過集合的末尾,列舉器會位於集合的最後一個元素之後,並 MoveNext 返回 false。 當列舉器處於此位置時,後續呼叫 MoveNext 也返回 false。 若最後一次呼叫 MoveNext 回傳 false, Current 則為未定義。 你不能再次設定 Current 到集合的第一個元素;你必須建立一個新的列舉器實例。
只要集合未曾改變,列舉器仍然有效。 若對集合進行變更,例如新增、修改或刪除元素,列舉子將無法恢復地失效,下一次呼叫 MoveNext 或 IEnumerator.Reset 會拋 InvalidOperationException出 。
列舉值沒有集合的獨佔存取權;因此,透過集合列舉本質上不是安全線程的程式。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合。 若要允許多個線程存取集合以進行讀取和寫入,您必須實作自己的同步處理。
集合的預設實作 System.Collections.Generic 並未同步。
屬性
| 名稱 | Description |
|---|---|
| Current |
取得列舉器當前位置的元素。 |
方法
| 名稱 | Description |
|---|---|
| Dispose() |
釋放 LinkedList<T>.Enumerator所使用的所有資源。 |
| MoveNext() |
將列舉器推進到下一個元素 LinkedList<T>。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IDeserializationCallback.OnDeserialization(Object) |
實 ISerializable 作介面,並在反序列化完成後觸發反序列化事件。 |
| IEnumerator.Current |
取得列舉器當前位置的元素。 |
| IEnumerator.Reset() |
將列舉值設定為其初始位置,也就是集合中第一個專案之前。 此類別無法獲得繼承。 |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
實作介面 ISerializable 並回傳序列化 LinkedList<T> 實例所需的資料。 |