Un compañero de trabajo utilizó un bucle for para repetir una lista en algún código C# que escribió y dejó el comentario, "no usó para cada uno porque no estaba seguro de que itere en orden. Quién sabe qué hará Microsoft". Por ejemplo, supongamos que tenemos una lista integrada así:¿Está garantizado que la declaración foreach de .NET itere una colección en el mismo orden en el que se creó?
var someList = new List<string>();
someList.Add("one");
someList.Add("two");
someList.Add("three");
mi compañero de trabajo utiliza algo como esto:
for (int i = 0; i < someList.Count; i++)
{
System.Diagnostics.Debug.WriteLine(someList[i]);
}
en lugar de esto:
foreach (var item in someList)
{
System.Diagnostics.Debug.WriteLine(item);
}
supongo que tiene miedo de la los elementos pueden salir en un orden diferente al que se agregaron a la colección. Creo que está siendo un poco paranoico, pero técnicamente, la documentación no indica el orden en que se itera la colección. ¿Es posible que una instrucción foreach atraviese una matriz o un objeto de colección en cualquier orden que no sea desde el límite más bajo al más alto?
+1 Ah, no, el efecto Skeet te hace obtener menos votos. –
Probando para ver si puedo superar el efecto Skeet. Dedos cruzados. –
Actualmente tiene uno más que yo debido a mi propio voto popular. Supongo que no es el efecto Skeet que quería decir;) –