Lección 2 · ~12 min · ← Lección 1

Variables y tipos base

Cada valor de C# tiene un tipo, decidido en el momento en que lo escribes. Conoce los cinco que usarás a diario y las tres trampas que muerden a cada principiante exactamente una vez.

Una variable es una caja etiquetada de una sola forma

Declarar una variable = reservar una caja, etiquetarla y decidir qué forma cabe. Una vez decidido, la forma nunca cambia:

int edad = 36;                // solo números enteros
double altura = 1.7;          // números decimales
string nombre = "Ada Lovelace"; // texto, entre comillas
bool esProgramador = true;    // exactamente true o false

Console.WriteLine(edad);
Console.WriteLine(nombre);
Console.WriteLine(esProgramador);

Lee int edad = 36; de derecha a izquierda: "toma 36 y mételo en una caja llamada edad que solo admite int". El tipo es una promesa — al compilador y a cada lector futuro.

El char que conocerás después: char

El quinto tipo base guarda un solo carácter, entre comillas simples. Es una especie distinta de un string de una letra:

char letra = 'a';        // comillas simples = exactamente un carácter
Console.WriteLine(letra);
Console.WriteLine(letra + 0);     // sorpresa: un char ES su número (97 = código de 'a')
Console.WriteLine((char)(letra + 1));  // …así que la aritmética con char funciona

var: las mismas cajas, deja que el compilador ponga la etiqueta

var no significa "cualquier cosa vale" — significa "compilador, mira el lado derecho y rellena el tipo por mí":

var precio = 9.99;   // el compilador escribe: double precio = 9.99;
var cantidad = 42;   // el compilador escribe: int cantidad = 42;

Console.WriteLine(precio);
Console.WriteLine(cantidad);

Prueba de que no es tipado dinámico — intenta meter texto en un número var en el playground: el compilador se niega exactamente como si hubieras escrito int. (Historia completa: var frente a tipos explícitos.)

Trampa 1: la división int tira la fracción

Console.WriteLine(7 / 2);    // ambos int → aritmética entera → 3
Console.WriteLine(7 / 2.0);  // un double → aritmética double → 3.5

Esto tiene su propio artículo: por qué 7 / 2 = 3 en C# — incluidos los negativos y las tres soluciones.

Trampa 2: int tiene techo — y da la vuelta

int mayor = int.MaxValue;
Console.WriteLine(mayor);
Console.WriteLine(mayor + 1);   // ¡da la vuelta al int más negativo!

Un int son 32 bits: cabe −2.147.483.648 … 2.147.483.647. Pasado el techo da la vuelta (como el cuentakilómetros de un coche). Para enteros mayores, el código real usa long (64 bits).

Trampa 3: los double son aproximados

Console.WriteLine(0.1 + 0.2 == 0.3);             // ¡False! la suma es 0.30000000000000004…
Console.WriteLine((0.1 + 0.2).ToString("F2"));  // 0.30 — el formato oculta el problema

Los double guardan decimales en binario, y algunos valores decimales (¡0.1!) no tienen forma binaria exacta — igual que ⅓ no tiene forma decimal exacta. Muestra con formatos como F2; nunca compares doubles con ==; para dinero, el código real usa decimal.

Imprimir: unir valores en texto

Tres formas, mismo resultado. La interpolación es la favorita moderna:

string nombre = "Ada";
int edad = 36;

Console.WriteLine(nombre + " tiene " + edad);        // concatenación: + pega texto
Console.WriteLine(string.Format("{0} tiene {1}", nombre, edad));  // marcadores
Console.WriteLine($"{nombre} tiene {edad}");         // interpolación: $ + {…}

Practica ahora