miércoles, 26 de agosto de 2015 Tipos de Datos y Variables en C# .NET Los tipos de datos en C# son muy similares a los ya conocidos en Visual Basic .NET (ver Datos y variables en Visual Basic .NET). A continuación se presenta una tabla con los tipos de datos que podemos encontrar en C#. Tipo Valores bool True, False byte 0-255 sbyte -128 a 127 char Símbolos Unicode utilizados en el texto float -3,402823e38 a 3,402823e38 decimal ±1.0 × 10e−28 a ±7.9 × 10e28 double -1,79769313486232e308 a 1,79769313486232e308 short −32.768 hasta 32.767 ushort 0 hasta 65.535 int −2.147.483.648 hasta 2.147.483.647 uint 0 hasta 4.294.967.295 long −9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807 ulong 0 hasta 18.446.744.073.709.551.615 object Cualquier tipo puede almacenarse en Object string Cualquier secuencia de caracteres Al igual que en Visual Basic .NET, cada tipo de dato proviene de una clase que para C# está ubicada en el espacio de nombres System. Los tipos de datos descritos anteriormente se obtienen de las siguientes clases. Tipo C# Tipo .NET Framework bool System.Boolean byte System.Byte sbyte System.SByte char System.Char decimal System.Decimal double System.Double float System.Single int System.Int32 uint System.UInt32 long System.Int64 ulong System.UInt64 object System.Object short System.Int16 ushort System.UInt16 string System.String Declaración e inicialización de variables En C# podemos declarar variables escribiendo el tipo de dato, seguido del nombre de la variable tal y como se muestra en el siguiente ejemplo. ? 1 int a; Además, podemos declarar e inicializar variables en una sola instrucción. En el siguiente ejemplo se declara una variable entera en la primera línea, se inicializa en la segunda y finalmente en la tercera línea se declara e inicializa otra variable en una sola sentencia. ? 1 2 3 int b; b = 10; int c = 5; De igual forma se pueden aplicar estas sencillas reglas con cualquier otro tipo de dato. Constantes Para declara una constante en C# se realiza con la palabra reservada const. Además de esto, C# proporciona la palabra reservada readonly para declara una variable que solo puede ser asignada una vez en tiempo de ejecución y su valor no puede cambiar. La diferencia entre estas dos instrucciones, básicamente radica en que una constante al ser declarada e inicializada no puede cambiar su valor en tiempo de ejecución. A continuación, un ejemplo de declaración y asignación de constantes. ? 1 2 public const int c1 = 5; public const double x = 1.0, y = 2.0, z = 3.0; En la primera línea, hemos asignado a c1 el valor 5 como una constante entera. De igual forma en la segunda línea se han asignado tres constantes en la misma declaración, esta vez, de tipo double. Enumeraciones Las enumeraciones en C# se utilizan para agrupar constantes en un solo nombre de manera similar a como se hace en C y C++. ? 1 2 3 4 5 6 7 public enum Color { Green, //defaults to 0 Orange, //defaults to 1 Red, //defaults to 2 Blue = 3 } Como se puede ver en el ejemplo anterior, se ha utilizado el nombre Color para agrupar cuatro constantes, tres de las cuales ya deben estar definidas anteriormente en el código y toman los valores correspondientes por defecto. La última constante, ha sido asignada manualmente con el valor 3. Para acceder a cualquiera de las constantes definidas en la enumeración basta con juntar el nombre de la enumeración seguida de un punto y el nombre de la constante. ? 1 Color favorite = Color.Blue; Conversiones de Tipo C# puede realizar conversiones de tipo de manera implícita o explicita dependiendo del contexto. Una conversión implícita luce de la siguiente forma. ? 1 2 int int1 = 5; long long1 = int1; //conversión A continuación, se presenta una tabla que nos ayudará a determinar qué tipos de datos pueden ser convertidos a otros de manera implícita. Tipo de origen Tipo de destino Byte short, ushort, int, uint, long, ulong, float, double o decimal Sbyte short, int, long, float, double o decimal Int long, float, double o decimal Tipo de origen Tipo de destino Uint long, ulong, float, double o decimal Short int, long, float, double o decimal Ushort int, uint, long, ulong, float, double o decimal Long float, double o decimal Ulong float, double o decimal Float double Char ushort, int, uint, long, ulong, float, double o decimal Las conversiones explícitas, como su nombre lo indica, declaran explícitamente la conversión de un tipo a otro. ? 1 2 long long2 = 5483; int int2 = (int)long2; // conversión Como puede verse, para convertir explícitamente de un tipo a otro debe declararse el tipo al cual quiere convertirse entre paréntesis antes del nombre de la variable a convertir. Este es un comportamiento esperado, y es similar a lo que ocurre en otros lenguajes de programación como Java o PHP. A continuación, se presenta una tabla que nos ayudará a determinar cuándo debemos utilizar la conversión explícita. Tipo de origen Tipo de destino Byte sbyte o char Sbyte byte, ushort, uint, ulong o char Int sbyte, byte, short, ushort, uint, ulong o char Uint sbyte, byte, short, ushort, int o char Short sbyte, byte, ushort, uint, ulong o char Ushort sbyte, byte, short o char Long sbyte, byte, short, ushort, int, uint, ulong o char Ulong sbyte, byte, short, ushort, int, uint, ulong o char Float sbyte, byte, short, ushort, int, uint, long, ulong, char o decimal Double sbyte, byte, short, ushort, int, uint, long, ulong, char o decimal Char sbyte, byte o short Decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float o double Dado que C# es un lenguaje puramente orientado a objetos, es necesario contar con las bases de la POO para tener un entendimiento claro del lenguaje. Por lo pronto, es recomendable visitar el post Introducción a la Programación Orientada a Objetos. Hasta pronto!. Referencias - Tipos de datos (C# y Java) (2015, August). In Learn to Develop With Microsoft | MSDN. Retrived 10:00, August 25, 2015 from https://msdn.microsoft.com/es-es/library /ms228360(v=vs.80).aspx - Built-In Types Table (C# Reference) (2015, August). In Learn to Develop With Microsoft | MSDN. Retrived 10:00, August 25, 2015 from https://msdn.microsoft.com/en-us/library /ya5y69ds.aspx - const (C#) (2015, August). In Learn to Develop With Microsoft | MSDN. Retrived 14:20, August 25, 2015 from https://msdn.microsoft.com/es-es/library/e6w8fe1b(v=vs.80).aspx