Bueno, podría hacer lo mismo con Dictionary
, pero sería más limpio usar foreach
en tanto casos:
foreach (var entry in dictionary)
{
string key = entry.Key;
int value = entry.Value;
// Use them...
}
Esto es equivalente a:
using (var iterator = dictionary.GetEnumerator())
{
while (iterator.MoveNext())
{
var entry = iterator.Current;
string key = entry.Key;
int value = entry.Value;
// Use them...
}
}
Es muy rara vez son útiles para llamar explícitamente GetEnumerator
e iterar a sí mismo. Es apropiado en un puñado de casos, como cuando desea tratar el primer valor de manera diferente, pero si va a tratar todas las entradas de la misma manera, use foreach
.
(Tenga en cuenta que lo que realmente es equivalente a usar var
aquí, pero no equivalente a declarar un IEnumerator<KeyValuePair<string, int>>
- que en realidad va a utilizar el anidado Dictionary.Enumerator
estructura Eso es un detalle que generalmente no es necesario preocuparse..)
Entonces, ¿cuál sería más rápido? usando IEnumerator o foreach (KeyValuePair. porque mi diccionario contiene más de 200000 palabras. –
'foreach' llama a' GetEnumerator' y 'MoveNext' internamente. Así que esto no debería hacer ninguna diferencia.Además, la variante genérica debería ser algo más rápida, ya que las fundiciones ya no son necesarias. Especialmente 'int' no tiene que encajonarse ni desempaquetarse. –