Tipos de datos primitivos en C#

Resumen

Todo programa, sin importar su complejidad, se mueve gracias a datos. Entender los tipos de datos primitivos en C# es el primer paso para construir software sólido, optimizar memoria y elegir la estructura correcta para cada variable que crees.

¿Por qué los datos son la base de cualquier programa?

Desde las primeras computadoras, que funcionaban como calculadoras gigantes, hasta plataformas como Platzi o videojuegos como Mario Bros, todo software procesa entradas para devolver un resultado. En Mario, las vidas, el tiempo restante y el número de nivel son datos. En Platzi, lo son tus credenciales y las solicitudes que disparas al cargar un curso.

La idea es simple: un programa recibe inputs, los procesa siguiendo un algoritmo y entrega una salida. Si metes los mismos ingredientes, obtienes el mismo taco. Y esos ingredientes, en el mundo del código, se llaman datos [3:00].

¿Qué es un tipo de dato primitivo? Es la unidad mínima de información que un lenguaje de programación reconoce de forma nativa, como números enteros, decimales, caracteres o valores verdadero/falso.

¿Cuáles son los tipos de datos primitivos en C#?

C# trabaja con un conjunto de tipos base que conviene memorizar. No verás un tipo "video" o "imagen" porque, al final, esos archivos se descomponen en números: ceros y unos almacenados en disco [4:30].

Enteros: int, long y uint

El tipo int viene de integer y ocupa 4 bytes de memoria. Su rango va desde -2 147 483 648 hasta 2 147 483 647 [6:00]. Si necesitas guardar un número mayor, int se queda corto y debes usar long, que ocupa 8 bytes y duplica la capacidad para valores positivos y negativos.

Luego está uint o unsigned integer, que descarta el signo negativo y va de 0 hasta 4 294 967 295 [13:00]. La U significa sin signo, y resulta útil cuando sabes que tus cálculos nunca producirán negativos, como una multiplicación entre positivos.

  • int: 4 bytes, números enteros con signo.
  • long: 8 bytes, enteros muy grandes con signo.
  • uint: 4 bytes, solo enteros positivos.

Decimales: float y double

Cuando necesitas precisión con punto decimal, C# te ofrece dos opciones. El tipo float ocupa 4 bytes y guarda números con decimales de hasta seis o siete dígitos totales. El tipo double ocupa 8 bytes, literal el doble, y permite hasta 15 dígitos de precisión [10:00].

¿Cuál usar? Si tu cálculo necesita exactitud (por ejemplo, en finanzas o física), double es tu mejor aliado. Para valores más sencillos, float basta.

Caracteres y cadenas: char y string

El tipo char almacena un solo carácter y ocupa 2 bytes. Sí, una letra pesa más de lo que parece, porque puede incluir variantes como acentos o caracteres especiales [11:00]. El tipo string es una cadena de caracteres: si tu nombre tiene 65 letras, ocupará aproximadamente 130 bytes en memoria.

¿Cuál es la diferencia entre char y string en C#? char guarda un solo carácter (2 bytes); string guarda una secuencia de caracteres y crece según la longitud del texto.

Booleanos: bool

El tipo bool viene del álgebra booleana y solo ocupa 1 bit, la unidad más pequeña de memoria. Almacena dos valores posibles: true o false [9:00]. Lo usarás muchísimo cuando hagas validaciones, comparaciones o condicionales en tu código.

Imagínalo como un LED que está prendido o apagado. Nada más, nada menos.

¿Cuándo conviene optimizar el tipo de dato?

Hace 20 años, las computadoras tenían 32 o 120 MB de RAM y elegir entre long y uint podía marcar la diferencia entre un programa fluido y uno colapsado. Hoy, con equipos que arrancan en gigas de RAM, la sobreoptimización ya no es prioridad [15:30].

Aun así, conocer la capacidad de cada tipo te ayuda a:

  • Calcular el alcance real de tu programa.
  • Evitar errores de desbordamiento (overflow).
  • Tomar decisiones informadas sobre rendimiento.

C# en sus versiones recientes incluso permite que el compilador deduzca el tipo por ti, algo que verás más adelante cuando entres al mundo de las variables.

¿Cuál fue el tipo de dato que más te sorprendió por su tamaño en memoria? Cuéntame en los comentarios.