Представим ситуацию в который мы создали объект A a = new A(), а потом этот объект передали в какой-то метод b.info(a). Сколько весит ссылка на объект a ? И отчего зависит вес ссылки (от архитектуры операционной системы, веса самого объекта и тд)
С какой целью интересуетесь?
Сама ссылка (это же просто адрес памяти, где находится начало объекта) занимает 32-бита или 64 бита, в зависимости от ОС. Но никакой практической пользы от этих знаний в контексте c# я не вижу.
freeExec, я имею в виду, что ссылки в шарпе - это не сырые указатели, а идентификаторы объектов, которые лежат в управляемой куче.
Настоящий адрес объекта может меняться из-за работы GC.
"Адрес в памяти, где находится начало объекта" можно получить только при помощи оператора fixed
freeExec, Просто стало любопытно как это устроено. А если я передаю в метод список либо массив, ссылка на что передается ? Типо на контейнер к котором хранятся остальные ссылки ? Или на первый элемент коллекции ?
Василий Банников, То что fixed блокирует переменную для сборщика это понятно. Но вот что & возвращает не адрес, а некий айдишник, первый раз слышу. Где про это почитать?
Просто в отладчике и с fixed и без выдаёт один и тот же адрес
freeExec, да, один и тот же адрес выдаёт, так как вы обращаетесь к объекту из текущего стека. Но после работы gc фактические адреса в памяти могут изменяться.
Василий Банников, Ну и что, вопрос то не в перемещении. Я выяснял, что это адрес в памяти где конкретные данные лежат, а не какой-то идентификатор, как ты говорил.