Sunday, October 22, 2006

Es posible convertir cualquier valor entero a un tipo Enum, aun si el valor entero esta fuera de los valores definidos en tu Enum

Este articulo aplica a C# (probado en C# 2.0 (VS2005))

Pues si, casi se los cuento todo en el titulo, pero asi es, ultimamente he estado investigando bastante sobre Enums y he encontrado unas cosillas muy interesantes, esta es una de ellas; por ejemplo este codigo es valido y se ejecuta sin ningun problema:

public enum TestEnum {
  Enum1 = 1,
  Enum2 = 2,
  Enum3 = 3
}
...
TestEnum t = (TestEnum)10; //WTF?
Console.Write(t.ToString()); //cual creen que sea la salida?
Console.Read();

Si a eso le agregas que el valor que estas convirtiendo viene (por ejemplo) de una base de datos, podras entender como esto podria esto afectar la logica en tu programa.

Si estas trabajando con Enums, te recomiendo que leas este articulo de Krzysztof Cwalina (solo en ingles), que es una referencia / guia muy completa para los tipos de enumeraciones; ahora que cuando uno se mete con Nullable Enums, la cosa se pone aun mas interesante, ya les platicare algunas cosillas que estoy haciendo en esa area

No comments: