Recorrer los valores de un enumerado con C#

Hoy he necesitado crear un Hashtable que para cada día de la semana (DayOfWeek) indicase un valor booleano. En el constructor de la clase es necesario crear este Hashtable y asignar valores por defecto a cada día. Para ello, dado que DayOfWeek es un enumerado, hay que recorrer los posibles valores del enumerado y para cada valor añadir un elemento al Hashtable.

Este es el código del constructor, de forma resumida, que he utilizado:

public Regla()
{
   this.dias  = new Hashtable();
   foreach(int nval in DayOfWeek.GetValues(typeof(DayOfWeek))){
      this.dias.Add(Enum.ToObject(typeof(DayOfWeek),nval), false);
   }
}

Lo que hago es recorrer los posibles valores enteros del enumerado, obteniéndolos con el método estático DayOfWeek.GetValues. A la hora de añadir al Hashtable tengo que utilizar como clave el enumerado asociado al valor numérico, para lo cual utilizo Enum.ToObject(typeof(DayOfWeek), nval).

Supongo que habrá alguna otra forma, quizás más sencilla.

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

2 Respuestas para “Recorrer los valores de un enumerado con C#”

  1. Hola, en primer lugar gracias por este artículo. Me ha servido bastante. Aquí pongo una forma para realizar mas o menos la misma tarea, esta en concreto crea un array de strings con todos los días de la semana.

    String[] s = DayOfWeek.GetNames(typeof(DayOfWeek));

  2. Muy buena, Gracias, a ambos ya que me ha servido para lo que quería Hacer. Soy nuevo en C# y una cosa tan fácil en Delphi, en C# cambia.
    Gracias