Dictionary<TKey,TValue>.Enumerator Estructura
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Enumera los elementos de un Dictionary<TKey,TValue>objeto .
public: value class Dictionary<TKey, TValue>::Enumerator : System::Collections::Generic::IEnumerator<System::Collections::Generic::KeyValuePair<TKey, TValue>>, System::Collections::IDictionaryEnumerator
public struct Dictionary<TKey,TValue>.Enumerator : System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.IDictionaryEnumerator
[System.Serializable]
public struct Dictionary<TKey,TValue>.Enumerator : System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.IDictionaryEnumerator
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IEnumerator
interface IDisposable
interface IDictionaryEnumerator
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IDisposable
interface IDictionaryEnumerator
interface IEnumerator
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IDisposable
interface IEnumerator
interface IDictionaryEnumerator
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IDictionaryEnumerator
interface IEnumerator
interface IDisposable
Public Structure Dictionary(Of TKey, TValue).Enumerator
Implements IDictionaryEnumerator, IEnumerator(Of KeyValuePair(Of TKey, TValue))
Parámetros de tipo
- TKey
- TValue
- Herencia
- Atributos
- Implementaciones
Comentarios
La foreach instrucción del lenguaje C# (For Each en Visual Basic) oculta la complejidad de los enumeradores. Por lo tanto, se recomienda usar foreach , en lugar de manipular directamente el enumerador.
Los enumeradores se pueden usar para leer los datos de la colección, pero no se pueden usar para modificar la colección subyacente.
Inicialmente, el enumerador se coloca antes del primer elemento de la colección. En esta posición, Current no está definido. Debe llamar MoveNext a para avanzar el enumerador al primer elemento de la colección antes de leer el valor de Current.
Current devuelve el mismo objeto hasta MoveNext que se llama a . MoveNext establece Current en el elemento siguiente.
Si MoveNext pasa el final de la colección, el enumerador se coloca después del último elemento de la colección y MoveNext devuelve false. Cuando el enumerador está en esta posición, las llamadas posteriores a MoveNext también devuelven false. Si la última llamada a MoveNext se falsedevuelve , Current no está definida. No se puede establecer Current de nuevo en el primer elemento de la colección; debe crear una nueva instancia del enumerador en su lugar.
Un enumerador sigue siendo válido siempre que la colección permanezca sin cambios. Si se realizan cambios en la colección, como agregar elementos o cambiar la capacidad, el enumerador se invalida irrecuperablemente y la siguiente llamada a MoveNext o IEnumerator.Reset produce una InvalidOperationExceptionexcepción .
Solo .NET Core 3.0+: los únicos métodos de mutación que no invalidan son Remove y Clear.
El enumerador no tiene acceso exclusivo a la colección; por lo tanto, la enumeración a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Para garantizar la seguridad de los subprocesos durante la enumeración, puede bloquear la colección durante toda la enumeración. Para permitir que varios subprocesos puedan acceder a la colección para leer y escribir, debe implementar su propia sincronización.
Las implementaciones predeterminadas de colecciones en System.Collections.Generic no se sincronizan.
Propiedades
| Nombre | Description |
|---|---|
| Current |
Obtiene el elemento en la posición actual del enumerador. |
Métodos
| Nombre | Description |
|---|---|
| Dispose() |
Libera todos los recursos usados por .Dictionary<TKey,TValue>.Enumerator |
| MoveNext() |
Desplaza el enumerador al siguiente elemento de .Dictionary<TKey,TValue> |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IDictionaryEnumerator.Entry |
Obtiene el elemento en la posición actual del enumerador. |
| IDictionaryEnumerator.Key |
Obtiene la clave del elemento en la posición actual del enumerador. |
| IDictionaryEnumerator.Value |
Obtiene el valor del elemento en la posición actual del enumerador. |
| IEnumerator.Current |
Obtiene el elemento en la posición actual del enumerador. |
| IEnumerator.Reset() |
Establece el enumerador en su posición inicial, que es antes del primer elemento de la colección. |