Class CharArrayDictionary<TValue>.Enumerator
Enumerates the elements of a CharArrayDictionary<TValue>.
This enumerator exposes CurrentKey efficient access to the underlying char[]. It also has CurrentKeyString, CurrentKeyCharSequence, and CurrentValue properties for convenience.Inherited Members
Namespace: Lucene.Net.Analysis.Util
Assembly: Lucene.Net.Analysis.Common.dll
Syntax
public sealed class CharArrayDictionary<TValue>.Enumerator : IEnumerator<KeyValuePair<string, TValue>>, IDictionaryEnumerator, IEnumerator, IDisposable
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 KeyValuePair<string, TValue> Current { get; }
Property Value
Type | Description |
---|---|
KeyValuePair<string, 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.
CurrentKey
Gets the current text... do not modify the returned char[].
Declaration
public char[] CurrentKey { get; }
Property Value
Type | Description |
---|---|
char[] |
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.
CurrentKeyCharSequence
Gets the current text as a J2N.Text.CharArrayCharSequence.
Declaration
public ICharSequence CurrentKeyCharSequence { get; }
Property Value
Type | Description |
---|---|
ICharSequence |
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.
CurrentKeyString
Gets the current text as a newly created string object.
Declaration
public string CurrentKeyString { get; }
Property Value
Type | Description |
---|---|
string |
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.
CurrentValue
Gets the value associated with the current text.
Declaration
public TValue CurrentValue { get; }
Property Value
Type | Description |
---|---|
TValue |
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.
Methods
Dispose()
Releases all resources used by the CharArrayDictionary<TValue>.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>.
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. |
SetValue(TValue)
Sets the value associated with the current text.
Declaration
public TValue SetValue(TValue value)
Parameters
Type | Name | Description |
---|---|---|
TValue | value |
Returns
Type | Description |
---|---|
TValue | Returns the value prior to the update. |
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.