Класс ведь ссылочный тип, а переменные в классе могут быть типами по значению. Например: class Car { public int maxSpeed public Car(int max) { maxSpeed = max } } Где хранится maxSpeed — в стеке или куче?
Ответ Сам по себе вопрос вызван двумя проблемами достаточно распространенным, но в общем случае неверным утверждением "переменные value-type хранятся в стеке" небольшой путаницей в терминологии - поля класса это не "переменные" - не локальные переменные. Дело в том, что на уровне языка C# нет понятия "стэк" и "куча". Есть два вида типов: Ссылочные. Значение переменной или поля класса этого типа хранит в себе адрес памяти, по которому лежит экземпляр типа. Сам по себе экземпляр при этом обычно лежит в куче. Пример - строки. Value-types (типы-значения). Значение переменной или поля класса хранит значение напрямую. Пример - int. Понятие стека есть на уровне .NET/IL. Локальные переменные в методах уровня IL .NET хранятся в стеке. Переменная C# превращается в переменную метода IL далеко не всегда. Это происходит, если: на нее нет замыканий она объявлена в не-async-методе еще много разных условий, вызванных особенностями реализации конкретного компилятора C#. Поля типов хранятся как часть самого экземпляра типа. Они физически лежат в том куске памяти, который выделен под конкретных экземпляр типа. Т.е. если экземпляр сам по себе лежит в стеке (например, это экземпляр структуры) - то поле хранится в стеке. Если экземпляр лежит в куче - то и поле лежит в куче. Конкретные примеры В методе объявлен int a - он лежит прямо в стеке В методе объявлен string s - в переменной в стеке лежит адрес строки в куче. В методе объявлен Car c - в переменной в стеке лежит адрес объекта Car. Сам объект лежит в куче. Частью объекта в куче является поле maxSpeed, в нем лежит значение скорости. В методе объявлен int [] arr - в переменной в стеке лежит адрес массива в куче. Прямо в объекте массива в куче лежат значения отдельных ячеек. Объявлена структура Point с полями X/Y. В методе объявлена переменная Point p - в переменной в стеке лежит сама структура, со всеми полями.