Единственные переменные, хранящиеся в стеке, являются локальными переменными для функции. Для ссылочных типов ссылка хранится в стеке, а объект, на который она ссылается, хранится в куче. Для типов значений сам объект хранится в стеке. Обратите внимание, что локальные переменные, которые могут выходить из локальной функции (например, через замыкание), хранятся в отдельной структуре данных в куче, включая любые типы значений, которые могут быть включены.
Другими словами, поскольку ссылочные типы всегда хранятся в куче, все, что они содержат (даже типы значений), также сохраняется в куче.