Variables y Tipos de Datos
C# divide los tipos en dos categorías con comportamiento diferente. Los tipos de valor (int, double, bool, char, struct) se almacenan directamente en la pila de memoria: cuando los asignas o pasas a un método, se copia el valor completo.
Los tipos de referencia (class, string, arrays) se almacenan en el heap: la variable guarda solo una dirección de memoria al objeto. Cuando los pasas a un método, el método ve el mismo objeto, no una copia.
C# moderno (versión 8 en adelante) introdujo nullable reference types: puedes anotar string? para indicar que esa variable puede ser null, y el compilador te advierte si intentas usarla sin verificar. Sin la anotación ?, el compilador asume que nunca será null y marca error si intentas asignarle null.
El tipo decimal (con sufijo m) es especial para dinero: a diferencia de double que usa representación binaria, decimal representa los números exactamente en base 10, evitando el famoso bug de 0.1 + 0.2 = 0.30000000000000004.
// Tipos de valor
int entero = 42;
double decimal_ = 9.99;
bool booleano = true;
char caracter = 'A';
long grande = 9876543210L;
float flotante = 3.14f;
decimal precio = 9.99m; // Alta precisión para dinero
// Tipo referencia
string texto = "Hola C#";
// Conversiones
int x = int.Parse("42"); // String → int
string s = x.ToString(); // int → string
double d = Convert.ToDouble("3.14");
// Nullable types
string? email = null; // Puede ser null (C# 8+)
int? edad = null;
// var - inferencia de tipo en compilación
var nombre = "Ana"; // string
var numero = 100; // int
var lista = new List<int>(); // List<int>
Practica esta lección
Resuelve los ejercicios del curso de C# en la app, gratis y con corrección automática.
Empezar a practicar