Diccionario y diccionario ordenados

Estaba buscando una manera de tener miDictionary enumerar suKeyValuePair en el mismo orden en que fueron agregados. Ahora,Documento del diccionario establezca claramente que:

Para propósitos de enumeración, cada artículo en el diccionario es tratado como unKeyValuePair<TKey, TValue> Estructura que representa un valor y su clave. El orden en el que se devuelven los artículos no está definido.

Descubrí que lo que necesitaba era unaOrderedDictionary, pero siendo el escéptico que soy, decidí intentarlo yo mismo:

OrderedDictionary od = new OrderedDictionary();
Dictionary<String, String> d = new Dictionary<String, String>();

for (int i = 0; i < 10; i++ )
{
    od.Add("key"+i,"value"+i);
    d.Add("key"+i,"value"+i);
}

System.Console.WriteLine("OrderedDictionary");
foreach (DictionaryEntry de in od) {
    System.Console.WriteLine(de.Key +", " +de.Value);
}

System.Console.WriteLine("Dictionary");
foreach (var tmp in d) {
    System.Console.WriteLine(tmp.Key +", " + tmp.Value);
}

Salida:

OrderedDictionary
key0, value0
key1, value1
key2, value2
...

Dictionary
key0, value0
key1, value1
key2, value2
...

Como puede ver, ambos están ordenados, y eso plantea 2 preguntas:
En cuyo caso laDictionary ¿Dar un orden diferente a aquel en el que se agregan los valores? Hace mi primeraforeach bucle asegurame recuperar miKeyValuePair ¿En el mismo orden, o tengo que usar el índice?

Respuestas a la pregunta(1)

Su respuesta a la pregunta