Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
En muchos programas se suelen dar a los usuarios una serie de opciones para que escoja. Por ejemplo un
tipo de bsqueda a realizar, un rango de posibles valores para parametrizar algn comportamiento, etc...
Lo ms habitual es que estas opciones se "mapeen" despus a elementos de una enumeracin en el
cdigo de la capa de negocio. De esta forma si definimos una similar a esta:
public enum EstadoCivil
{
Casado,
Soltero,
Divorciado,
Viudo,
Religioso,
}
Lo ms comn ser que en la interfaz de usuario exista un modo de seleccionar algn valor equivalente,
por ejemplo a travs de una lista desplegable o un conjunto de botones de radio.
Es bastante habitual generar los elementos de la interfaz manualmente, aadiendo opciones a una lista
Web o Windows, por ejemplo, con cdigo similar a este:
lista.Items.Add(new ListItem("Casado", "0");
lista.Items.Add(new ListItem("Soltero", "1");
etc...
Sin embargo, sera muy til poder aadir automticamente los valores de una enumeracin cualquiera
sin preocuparse por saber cuntas son o cul es su nombre. Gracias al poder de la reflexin en .NET esto
es algo muy sencillo de conseguir.
Por ejemplo, la siguiente funcin toma como argumentos una referencia a un control de lista cualquiera
de .NET (ListBox, CheckBoxList, DropDownList, etc...) y un valor enumerado cualquiera y rellena el
control con tantas opciones como tenga disponibles dicha enumeracin:
private void Enlaza(ListControl lst, Enum e)
{
string[] valores = Enum.GetNames(e.GetType());
Toda la clave est en el mtodo GetNames del tipo Enum, que devuelve una matriz con los nombres de
cada elemento de la enumeracin indicada. As, para rellenar una lista slo hay que escribir, por
ejemplo:
Enlaza(miListBox, EstadoCivil.Casado);
Con esto ya queda totalmente definido. Se convierte cada uno de los valores a su tipo subyacente (para
obtener su valor numrico, no su nombre) y luego se convierte en una cadena para aadirlo al ListItem.
Lo bueno de este cdigo es que, aunque un poco ms complicado permite trabajar de forma genrica
con cualquier enumeracin, sin importar su tipo o la cantidad de elementos que tenga.
Se puede retocar la funcin para que, si se desea, se aada opcionalmente un elemento extra al principio
o al final para permitir que el usuario escoja otra opcin (por ejemplo, "Otro", "Ninguno",
"[Cualquiera]"... dependiendo del contexto).
Si se produce un error se lanza una excepcin que recoge los detalles enviados por el programa a la lnea
de comandos. Puede resultar muy til. Es necesario incluir System.Diagnostics.
Y tienes una bonita matriz con los das de la semana en el idioma que quieras, empezando por el
domingo.
DateTime.Now)); que mostrara la cadena Hoy es seguida de la fecha actual en formato largo y en el
idioma del usuario actual.
Utilizar el mtodo ToString de los distintos tipos pasndole la cadena de formato como parmetro. Por
ejemplo: Console.WriteLine(DateTime.Now.ToString("D")); que mostrara la fecha actual
en formato largo y en el idioma local.
A continuacin hemos resumido en una prctica tabla los diferentes formatos estndar para los distintos tipos, y los
formatos personalizables para crear nuestras propias representaciones. Todos ellos se acompaan de ejemplos y sus
resultados para el idioma espaol y regin Espaa.
Excepto que se especifique explcitamente en la propia tabla, los especificadores estndar funcionan tanto en
minsculas como en maysculas.
Si lo deseas puedes descargar esta chuleta en formato PDF para facilitar su impresin y poder tenerla siempre a mano
en tu escritorio.
Nmeros
Especificadores de formato numrico bsico (en MSDN)
Especificador Tipo
Formato
Divisa/Moneda
{0:c}
1,23
-12,300,00
{0:d}
System.FormatException -12300
Notacin cientfica
{0:e}
1,230000e+000
-1,230000e+004
Especificador Tipo
Formato
Punto fijo
{0:f}
1,23
-12300,00
General
{0:g}
1,23
-12300
{0:n}
1,23
-12.300,00
{0:r}
1,23
System.FormatException
Hexadecimal
{0:x}
System.FormatException ffffcff4
Porcentaje
{0:p}
123,00 %
-1.230.000,00 %
Especificador Tipo
Ejemplo
Salida(con
1234.56,
doble)
Observaciones
{0:00.0000} 1234,5600
Marcador de
posicin de
dgito
{0:(#).#}
(1234),5
Punto decimal
{0:0.0}
1234,5
Separador de
miles
{0:0,0}
1.234
Porcentaje
{0:0.0%}
123456,0 %
{0:0.0}
Marcador de
posicin 0
Notacin
exponencial
Separador de
seccin
{0:00e+0}
12e+2
Fechas
Especificadores estndar para fechas (en MSDN)
Especificador
Tipo
Ejemplo
Fecha corta
22/04/2014
Fecha larga
Hora corta
18:19
Hora larga
18:19:47
22/04/2014 18:19
22/04/2014 18:19:47
Patrn mes da
22 abril
Fecha ordenable
2014-04-22T18:19:47
Universal ordenable
2014-04-22 18:19:47Z
Universal completa
abril de 2014
2014-04-22T18:19:47.9980451 +02:00
Tipo
Ejemplo
Ejemplo Salida
dd
Da
{0:dd}
22
ddd
{0:ddd}
mar
dddd
{0:dddd}
martes
Fracciones de segundo
{0:ffff}
5960
{0:gg}
DC
Especificador
Tipo
Ejemplo
Ejemplo Salida
hh
{0:hh}
06
HH
{0:HH}
18
mm
Minutos 00-59
{0:mm}
19
MM
Mes 01-12
{0:MM}
04
Mes (abreviacin)
{0:MMM}
abr
{0:MMMM}
abril
Segundos 0-59
{0:s}
47
ss
{0:ss}
47
tt
AM o PM
{0:tt}
PM
yy
Ao (2 dgitos)
{0:yy}
14
Ao
{0:yyyy}
2014
{0:%z}
+2
zz
{0:zz}
+02
zzz
{0:zzz}
+05:00
Separador de lo anterior
{0:hh:mm:ss}
04:40:47
Separador de lo anterior
{0:dd/MM/yyyy}
20/04/2014
MMM
MMMM
yyyy
Enumeraciones
Especificadores estndar para enumeraciones (en MSDN)
Especificador
Tipo
Valor por defecto (nombres de flags si estn disponibles, si no, el entero correspondiente)
Siempre enteros