Tipos de datos básicos en C#
Tipos de datos básicos en C#: numéricos, de texto, lógicos, orientados a objetos y anulables.
En C#, los datos se almacenan utilizando distintos tipos, y cada tipo determina el uso de memoria y las operaciones que se pueden realizar. Estos tipos influyen directamente en el comportamiento del programa. En este artículo analizaremos los tipos de datos numéricos, textuales, lógicos, dinámicos y nullable con ejemplos prácticos.
Elegir correctamente el tipo de dato es una parte fundamental del aprendizaje de C#. Una selección adecuada mejora el rendimiento, optimiza el uso de memoria y reduce la posibilidad de errores. Comprender bien los tipos de datos básicos permite construir aplicaciones más sólidas y confiables.
Tipos numéricos
Se usan para enteros y números decimales. Para cálculos financieros se recomienda decimal.
| Tipo | Descripción | Ejemplo | Memoria |
|---|---|---|---|
int | Entero (−2B - +2B) | 42 | 4 bytes |
long | Enteros más grandes | 100000000 | 8 bytes |
short | Enteros pequeños | 120 | 2 bytes |
byte | 0 - 255 positivo | 200 | 1 byte |
double | Decimal (doble precisión) | 3.14 | 8 bytes |
float | Decimal (simple precisión) | 2.5f | 4 bytes |
decimal | Decimal para finanzas | 19.99m | 16 bytes |
int edad = 25;
double pi = 3.14159;
decimal precio = 19.99m;
Console.WriteLine(edad);
Console.WriteLine(pi);
Console.WriteLine(precio);
Nota: En cálculos financieros, se recomienda usar decimal en lugar de double, ya que evita errores de redondeo y ofrece una mayor precisión.
Tipos textuales
char almacena un solo carácter, mientras que string almacena una cadena de caracteres.
char inicial = 'M';
string mensaje = "Hola";
Console.WriteLine(inicial);
Console.WriteLine(mensaje);
Tipo lógico
bool solo puede ser true o false. Se usa en condiciones y comparaciones.
bool esEstudiante = true;
bool esGraduado = false;
Console.WriteLine(esEstudiante);
Console.WriteLine(esGraduado);
Tipos objeto y dinámicos
object, var y dynamic permiten un uso flexible.
object datos = 42;
var texto = "Hola";
dynamic variable = 5;
variable = "Ahora es un string";
Console.WriteLine(datos);
Console.WriteLine(texto);
Console.WriteLine(variable);
Tipos anulables
Los tipos de valor (int, double, bool) no pueden ser null por defecto. Con ? se hacen anulables.
int? nota = null;
if (nota == null)
Console.WriteLine("Nota no ingresada.");
else
Console.WriteLine($"Nota: {nota}");
¿Cuándo Usar Cada Tipo de Dato?
- int: Contadores, edades, cantidades y números enteros
- double: Mediciones físicas y cálculos aproximados
- decimal: Valores monetarios, precios y cálculos financieros
- string: Textos ingresados por el usuario
- bool: Condiciones, comparaciones y lógica de control
Asignaciones entre Tipos de Datos y Conversiones
En C#, las variables de distintos tipos de datos no siempre pueden asignarse directamente entre sí. Cuando los tipos no son compatibles, se produce un error de compilación.
Asignaciones Incorrectas
int numero = 10;
string texto = numero; // ERROR
bool estado = true;
int valor = estado; // ERROR
En los ejemplos anteriores, las asignaciones fallan porque los tipos de datos no son compatibles.
En la imagen superior, Visual Studio detecta de inmediato las asignaciones incorrectas entre tipos de datos incompatibles. En el ejemplo se intenta asignar valores entre tipos como bool e int, que no son compatibles de forma directa. El editor resalta el problema con un subrayado rojo y muestra un error de compilación como CS0029.
Conversiones Implícitas
int pequeno = 5;
double grande = pequeno; // Válido
Los tipos numéricos más pequeños pueden convertirse automáticamente en tipos numéricos más grandes.
Conversiones Explícitas
double pi = 3.14;
int entero = (int)pi; // 3
Las conversiones que pueden provocar pérdida de datos o precisión requieren una conversión explícita.
Resumen
- Números:
int,double,decimal - Texto:
char,string - Lógico:
bool - Flexibles:
object,var,dynamic - Anulables: con
?