C# tipi spadajo v dve temeljni kategoriji: vrednostni tipi (shranjevanje podatkov neposredno) in referenčni tipi (shranjevanje reference/kazalca na podatke v heap-u). Razlikujejo se v tem, kako se shranjujejo, kopirajo in primerjajo — to je bistvena razlika, ki vpliva na obnašanje v celotnem jeziku.
Dve kategoriji
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.
