Inicio > Cursos > C# > Variables y Tipos de Datos
C#Fundamentos de C#Lección 2 de 20

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>
Consejo💰 Usa decimal para cálculos monetarios, no double. double tiene errores de punto flotante como 0.1 + 0.2 = 0.30000000000000004.
← ¿Qué es C# y .NET?Operadores y Expresiones →

Practica esta lección

Resuelve los ejercicios del curso de C# en la app, gratis y con corrección automática.

Empezar a practicar