Los tipos de C# se dividen en dos categorías fundamentales: tipos de valor (almacenan los datos directamente) y tipos de referencia (almacenan una referencia/puntero a datos en el heap). Se diferencian en cómo se almacenan, se copian y se comparan — una distinción crucial que afecta el comportamiento en toda el lenguaje.
Las dos categorías
Value types → struct, int, double, bool, char, enum, DateTime, decimal
Stored INLINE (stack for locals); copied BY VALUE.
Reference types → class, string, array, object, interface, delegate
Variable holds a REFERENCE to data on the heap; copied BY REFERENCE.
