Typy C# dzielą się na dwie fundamentalne kategorie: typy wartościowe (przechowują dane bezpośrednio) i typy referencyjne (przechowują referencję/wskaźnik do danych na stercie). Różnią się sposobem przechowywania, kopiowania i porównywania — to kluczowe rozróżnienie wpływające na zachowanie w całym języku.
Dwie kategorie
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.
