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
- En el playground: declara una variable de cada uno de los cinco tipos e imprímelas en una línea con interpolación.
- Predice antes de ejecutar: ¿qué imprime
Console.WriteLine('a' + 'b');? (Pista: los char son números.) - Después, la siguiente lección natural es la Lección 3 — Tomar decisiones, o entra directo al primer problema con corrección.