Iteraciones en C#
A pedido del público, voy a hacer este post donde mostramos las formas de Iterar en C#. Estuve mirando que tengo muchos accesos al blog con estas palabras: Iteraciones en C#, entonces, hablemos de ello.
Carga de una lista:
List<string> list = new List<string>(); list.Add("Visual Basic Dynamic"); list.Add("IronPython"); list.Add("Ruby"); list.Add("Javascript");
Iteremos !
1. Utilizando foreach:
foreach(string item in list) { Console.WriteLine(item); }
2. Utilizando IEnumerator:
IEnumerator<string> ie = list.GetEnumerator(); while(ie.MoveNext()) { Console.WriteLine(ie.Current); }
3. Utilizando for:
for(int i = 0; i < list.Count; i++) { Console.WriteLine(list[i]); }
4. Usando metodo .ForEach(System.Action<T>):
list.ForEach( delegate(string str) { Console.WriteLine(str); } );
5. Metodo 4, pero sacando ventaja de la inferencia de tipos:
list.ForEach(Console.WriteLine);
¿Cuál es más rapido? No me atrevo a decir que método es más rapido, he hecho una clase de prueba [Iteraciones.cs], con 10000 iteraciones (nunca tengo tanto para iterar), y llegué a resultados similares.
Con Mono en Linux, he notado un poco más de rapidez que con Mono en Windows, inclusive más rapidez que con .Net de Microsoft. En Windows y Linux (Ubuntu 7.04) he usado Mono 1.2.3.1 version.
Caracteristicas de la laptop: Procesador Intel Core 2 Duo T5600 1.83GHz, 512Mb DDR2-667.
Considero que todas las formas son claras, son estructuras bien conocidas y cualquiera de ellas resulta facil de leer. Hay que usar la que más convenga llegado el caso. Por ejemplo:
1. for es más útil cuando conocemos los limites de la iteración, y también si queremos en todo momento consultar por qué número de iteración vamos.
2. foreach es para ir tratanto cada ítem dentro de su estructura. No es muy útil si se tiene que hacer castings por cada ítem.
3. IEnumerator, es para aplicar el patron iterator sin ninguna duda. Y así ir iterando al siguiente item.
4. ForEach, sin duda la ventaja de este este método es la única linea que se necesita. Se trata de una estructura que recibe como parámetro un delegado Action<T>, y dentro de sí, existe una iteración. Mono realiza esta iteración usando un foreach, y el .net framework de ms usa un for. Cuestion de gustos quizas.
One Response to Iteraciones en C#
Leave a Reply Cancel reply
-
Categories
- .NET
- ActiveRecord
- agil
- Alt.Net
- AOP
- Asp.net MVC
- blog
- C#
- codegeneration
- cosas interesantes
- db4o
- db4o-analyzer
- DLR
- enterprise-library
- expresiones regulares
- General
- Hibernate
- IoC
- it
- Java
- LINQ
- Linux
- Lucene
- Mocking
- Mono
- monosms
- MVC
- NAnt
- NHibernate
- NHibernate.Burrow
- NHibernate.Contrib
- NHibernate.Validator
- noticias
- O/R Mapping
- Open Source
- patrones
- personal
- podcast
- programación
- Redes Neuronales
- Refactoring
- regex
- Scrum
- Security
- Shards
- Sin Categoría
- Spring
- SqlServer
- Testing
- tips
- Tool
- tutorial
- Ubuntu
- uNHAddIns
- video
- Virtualización
- Visual Basic.Net
- Visual Studio
- VMWare
- Web
-
Articles
- June 2011
- May 2011
- November 2009
- October 2009
- April 2009
- March 2009
- February 2009
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- March 2006
- February 2006
- December 2005
- November 2005
- October 2005
-
Meta





[...] este post previo, hablábamos sobre las iteraciones en C# y donde dije que Mono me resultó un poco más rápido en [...]