Во-первых, вам нужно 4 байта на x32 или 8 байтов на x64, чтобы сохранить ссылку на адрес памяти объекта (ссылка - это скрытый указатель, которым забыть управлять им).
Далее объектздесь есть два элемента данных:
- Одно целое число, которое занимает 4 байта.
- Одна строка, которая здесь занимает 5 символов: 5x2 байта = 10 байтов.
Таким образом, для данных объект занимает 18 байтов в x32 или 22 байта в системе x64.
Поскольку строковый объект содержит целое число для длины, размер немного больше этого: 22 в x32 и 26 в x64.
Поскольку строка является ссылкой, нам нужно снова добавить 4 или 8 байтов => 26 или 34 байта.
Поскольку строка имеет некоторые другие статические поля и поля экземпляра в объявлении класса, такие какпервый символ, это занимает немного больше.
C # - действительно ли строка является массивом символов или у нее просто есть индексатор?
В дополнение к этомупамять в сегменте кода имеет инструкцииЭлектронный код методов. Этот код является общим для всех экземпляров.
Кроме того, существуют таблицы классов и виртуальные таблицы для описания типов, сигнатур методов и правил полиморфизма.
Если объект создается в методеон использует кучу памяти.
Если объект объявлен в объявлении как член класса, я не знаю, как работает .NET, но он может быть размещен в сегменте данных процессуса.
А память - как поезд, в котором байты - это байты.
Вот псевдограмма памяти.
Это не совсем истинная реальность, но она может помочь понять:

При доступе к переменной переменной в классе C # считывается весь класс из памяти
Куча C # (ing) против стека (ing) в .NET
Байт - это элементарная единица памяти, которая хранит одно значение за раз от 0 до 255 (без знака) или от -128 до +127 (подписано).
Изучите основы данных C #переменные типов
Поведение смещения для знаковых целых чисел
Руководство по представлению данных