LinkedList<T>.Enumerator Struct
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Enumera gli elementi di un oggetto 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>
[System.Serializable]
public struct 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>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
[<System.Serializable>]
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IDisposable
interface IEnumerator
interface ISerializable
interface IDeserializationCallback
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
interface IDeserializationCallback
interface ISerializable
Public Structure LinkedList(Of T).Enumerator
Implements IEnumerator(Of T)
Public Structure LinkedList(Of T).Enumerator
Implements IDeserializationCallback, IEnumerator(Of T), ISerializable
Parametri di tipo
- T
- Ereditarietà
- Attributi
- Implementazioni
Commenti
L'istruzione foreach del linguaggio C# (For Each in Visual Basic) nasconde la complessità degli enumeratori. Pertanto, è consigliabile usare foreach anziché modificare direttamente l'enumeratore.
Gli enumeratori possono essere usati per leggere i dati nella raccolta, ma non possono essere usati per modificare la raccolta sottostante.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento della raccolta. In questa posizione, Current non è definito. Pertanto, è necessario chiamare per far avanzare MoveNext l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non MoveNext viene chiamato . MoveNext imposta Current sull'elemento successivo.
Se MoveNext passa la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e MoveNext restituisce false. Quando l'enumeratore si trova in questa posizione, le chiamate successive per MoveNext restituire falseanche . Se l'ultima chiamata a MoveNext restituisce false, Current non è definita. Non è possibile impostare Current nuovamente sul primo elemento della raccolta. È invece necessario creare una nuova istanza dell'enumeratore.
Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato in modo irreversibile e la chiamata successiva a MoveNext o IEnumerator.Reset genera un'eccezione InvalidOperationException.
L'enumeratore non ha accesso esclusivo alla raccolta; pertanto, l'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione. Per consentire l'accesso alla raccolta da parte di più thread per la lettura e la scrittura, è necessario implementare la propria sincronizzazione.
Le implementazioni predefinite delle raccolte in System.Collections.Generic non vengono sincronizzate.
Proprietà
| Nome | Descrizione |
|---|---|
| Current |
Ottiene l'elemento in corrispondenza della posizione corrente dell'enumeratore. |
Metodi
| Nome | Descrizione |
|---|---|
| Dispose() |
Rilascia tutte le risorse usate da LinkedList<T>.Enumerator. |
| MoveNext() |
Sposta l'enumeratore all'elemento successivo dell'oggetto LinkedList<T>. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IDeserializationCallback.OnDeserialization(Object) |
Implementa l'interfaccia ISerializable e genera l'evento di deserializzazione al termine della deserializzazione. |
| IEnumerator.Current |
Ottiene l'elemento in corrispondenza della posizione corrente dell'enumeratore. |
| IEnumerator.Reset() |
Imposta l'enumeratore sulla posizione iniziale, ovvero prima del primo elemento della raccolta. La classe non può essere ereditata. |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Implementa l'interfaccia ISerializable e restituisce i dati necessari per serializzare l'istanza LinkedList<T> . |