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.
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));
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