viernes, 27 de noviembre de 2009

SENTENCIA FOREACH EN PROGRAMACION DE C#



La Sentencia foreach es un comando para enumerar los elementos de una colección.

foreach(Tipo indentificador in expresión){}

La variable de iteración es declarada por el Tipo, indentificador y expresión correspondiente a la colección.

La variable de iteración representa el elemento de la colección para cada iteración.

El siguiente ejemplo muestra el uso de for:

using System;
class App{
public static void Main(string[] aArgs){
for(int i = 0; i < aArgs.Length; i++){
Console.WriteLine("Elemento " + i + " = " + aArgs[i]);
}
}
}

El ejemplo anterior implementado con foreach:

using System;
class App{
public static void Main(string[] aArgs){
foreach(String s in aArgs){
Console.WriteLine(s);
}
}
}

No es posible asignar un nuevo valor a la variable de iteración. No se puede pasar la variable de iteración como un parámetro ref o out.

Para que una clase soporte la sentencia foreach, la clase debe soportar un método con la firma GetEnumerator() y la estructura, clase o interface que regresa debe tener un método público MoveNext y una propiedad pública Current.

En el siguiente ejemplo el método GetEnvironmentVariables() regresa una interfaz de tipo IDictionary. Es posible acceder a las colecciones Keys y Values de la interfaz IDictionary:

using System;
using System.Collections;

class SentenciaForEach{
public static void Main(){
IDictionary VarsAmb = Environment.GetEnvironmentVariables();
Console.WriteLine("Existen {0} variables de ambiente declaradas", VarsAmb.Keys.Count);
foreach(String strIterador in VarsAmb.Keys){
Console.WriteLine("{0} = {1}", strIterador, VarsAmb[strIterador].ToString());
}
}
}

Nota, es necesario tener una precaución extra al decidir el tipo de variable de iteración, porque un tipo equivocado no puede ser detectado por el compilador, pero si detectado en tiempo de ejecución y causar una excepción.

No hay comentarios:

Publicar un comentario