Struct CharArrayDictionary<TValue>.ValueCollection.Enumerator
Enumerates the elements of a CharArrayDictionary<TValue>.ValueCollection.
Inherited Members
Namespace: Lucene.Net.Analysis.Util
Assembly: Lucene.Net.Analysis.Common.dll
Syntax
public readonly struct CharArrayDictionary<TValue>.ValueCollection.Enumerator : IEnumerator<TValue>, IDisposable, IEnumerator
Remarks
The foreach
statement of the C# language (for each
in C++, For Each
in Visual Basic)
hides the complexity of enumerators. Therefore, using foreach
is recommended instead of directly manipulating the enumerator.
false
. When the enumerator is at this position, subsequent calls to MoveNext()
also return false
. If the last call to MoveNext() returned false
,
Current is undefined. You cannot set Current
to the first element of the collection again; you must create a new enumerator object instead.
An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection,
such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and the next call
to MoveNext() or Reset() throws an
InvalidOperationException.
The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is
intrinsically not a thread-safe procedure. To guarantee thread safety during enumeration, you can lock the
collection during the entire enumeration. To allow the collection to be accessed by multiple threads for
reading and writing, you must implement your own synchronization.
Properties
Current
Gets the element at the current position of the enumerator.
Declaration
public TValue Current { get; }
Property Value
Type | Description |
---|---|
TValue |
Remarks
Current is undefined under any of the following conditions:
- The enumerator is positioned before the first element of the collection. That happens after an enumerator is created or after the Reset() method is called. The MoveNext() method must be called to advance the enumerator to the first element of the collection before reading the value of the Current property.
-
The last call to MoveNext() returned
false
, which indicates the end of the collection and that the enumerator is positioned after the last element of the collection. - The enumerator is invalidated due to changes made in the collection, such as adding, modifying, or deleting elements.
Methods
Dispose()
Releases all resources used by the CharArrayDictionary<TValue>.ValueCollection.Enumerator.
Declaration
public void Dispose()
Remarks
The foreach
statement of the C# language (for each
in C++, For Each
in Visual Basic)
hides the complexity of enumerators. Therefore, using foreach
is recommended instead of directly manipulating the enumerator.
false
. When the enumerator is at this position, subsequent calls to MoveNext()
also return false
. If the last call to MoveNext() returned false
,
Current is undefined. You cannot set Current
to the first element of the collection again; you must create a new enumerator object instead.
An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection,
such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and the next call
to MoveNext() or Reset() throws an
InvalidOperationException.
The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is
intrinsically not a thread-safe procedure. To guarantee thread safety during enumeration, you can lock the
collection during the entire enumeration. To allow the collection to be accessed by multiple threads for
reading and writing, you must implement your own synchronization.
MoveNext()
Advances the enumerator to the next element of the CharArrayDictionary<TValue>.ValueCollection.
Declaration
public bool MoveNext()
Returns
Type | Description |
---|---|
bool |
|
Remarks
After an enumerator is created, the enumerator is positioned before the first element in the collection, and the first call to the MoveNext() method advances the enumerator to the first element of the collection.
If MoveNext passes the end of the collection, the enumerator is positioned after the last element in the collection and MoveNext() returnsfalse
. When the enumerator is at this position,
subsequent calls to MoveNext() also return false
.
An enumerator remains valid as long as the collection remains unchanged. If changes are made to the
collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated
and the next call to MoveNext() or Reset() throws an
InvalidOperationException.
Exceptions
Type | Condition |
---|---|
InvalidOperationException | The collection was modified after the enumerator was created. |