Мне любопытно узнать, как ссылки на объекты С# представлены в памяти во время выполнения (в .NET CLR). Некоторые вопросы, которые приходят на ум, следующие:
-
Сколько памяти занимает ссылка на объект? Различается ли это, если определено в области действия класса по сравнению с областью действия метода? Где он живет, зависит от этой области (стек против кучи)?
-
Каковы фактические данные, поддерживаемые в ссылке на объект? Это просто адрес памяти, указывающий на объект, на который он ссылается, или есть еще что-нибудь? Различается ли это в зависимости от того, определено ли это в рамках класса или метода?
-
Те же вопросы, что и выше, но на этот раз, когда речь идет о ссылке на ссылку, например, когда ссылка на объект передается методу по ссылке. Как изменить ответы на 1 и 2?