Типы значения определяются в ссылочном типе, сохраненном на "куче" или на стеке?
В стеке хранятся только локальные переменные функции. Для ссылочных типов ссылка хранится в стеке, а объект, на который она ссылается, хранится в куче. Для типов значений сам объект хранится в стеке. Обратите внимание, что локальные переменные, которые могут выходить из локальной функции (например, через замыкание), хранятся в отдельной структуре данных в куче, включая любые типы значений, которые могут быть включены.
Другими словами, поскольку ссылочные типы всегда хранятся в куче, все, что они содержат (даже типы значений), также сохраняется в куче.
Цитируется из здесь :
Каждая локальная переменная (т. Е. Одна объявленная в методе) хранится в стеке. Это включает переменные ссылочного типа - сама переменная находится в стеке, но помните, что значение переменная ссылочного типа - это только ссылка (или ноль), а не объект сам. Параметры метода считаются как локальные переменные тоже, но если они объявлены с модификатором ref, они не получить свой слот, но поделиться слот с переменной, используемой в вызывающий код
Я думаю, что-то вроде TextBox txtbx = new TextBox ();
означает, что переменная txtbx живет в стеке, но ее значение обычно является ссылкой на объект, живущий в куче.
Переменные экземпляра для ссылочного типа всегда находятся в куче. Вот где «живет» сам объект.