Actualmente estoy leyendo el libro C# 4.0 in a Nutshell, que, por cierto, creo que es un excelente libro, incluso para los programadores avanzados para utilizarlo como una buena referencia.Enum.IsDefined con enum encendidos
Estaba mirando hacia atrás en los capítulos sobre los conceptos básicos, y me encontré con un truco para decir si se define un cierto valor en un Enum al usar enumeraciones marcadas.
El libro afirma que el uso de Enum.IsDefined
no funciona en enumeraciones marcados, y sugiere una solución alternativa como esta:
static bool IsFlagDefined(Enum e)
{
decimal d;
return (!decimal.TryParse(e.ToString(), out d);
}
Esto debería devolver cierto si un determinado valor se define en una enumeración que está marcado.
¿Puede alguien explicarme por qué funciona?
Gracias de antemano :)
como un lado hay otro caso donde Enum.IsDefined podría comportarse diferente de lo esperado (o tal vez eso es predeterminado (T)). Enum.IsDefined (predeterminado (T)) puede devolver true y _false_. por defecto (T) (donde T es una enumeración) siempre devuelve (T) 0, por lo que si T no tiene un valor válido para (T) 0, el resultado es falso. ¿Me han engañado al menos una vez –