1. Referenční typy

Referenční datové typy jsou ukládány na haldě (anglicky „Heap“) v podobě odkazu (reference) na objekty (složitější typy) oproti přímému uložení paměti (v zásobníku - anglicky "Stack"), jako je tomu u hodnotových typů. Pokud tedy nějaký podprogram – v C# obecně nazvaný jako metoda – skončí, je přidělená paměť zásobníku automaticky uvolněna. Paměť zásobníku je uspořádána ve formě na sobě položených schránek.

U haldy je paměť uvolněna až tehdy, když zanikne poslední odkaz na objekt. Paměť haldy je ve formě volně pohozených schránek, kde každá schránka má jmenovku (informaci, zda je používána). Když je vytvářen nový objekt, je vyhledána prázdná schránka a je přidělena objektu – odkaz na objekt je uložen do lokální proměnné uložené v zásobníku.