object
является экземпляром class
. Память для объекта и любых членов хранится в куче. Обычно это называется [Reference Type][2]
, что означает, что он обрабатывается как ссылка (указатель) на местоположение.
В отличие от struct
- это Value Type
, который обрабатывается напрямую.
Передача предмета By Reference
(ключевое слово ref
или ключевое слово out
, как указывает Рид) передает ссылку (указатель) на рассматриваемый предмет. Это означает, что если вы передаете object
по ссылке, вы передаете указатель на указатель на объект в памяти.
Объект
arg(stack) -> oRef(heap) -> oData(heap)
Это означает, что мы можем изменить указатель на другое место (то есть на совершенно другой объект).
Передача предмета по значению означает передачу самого предмета. В случае структуры все это передается в стек. В случае объекта ссылка передается в стеке. Это означает, что когда объект передается, на объект все еще можно воздействовать и его члены изменяются, но его нельзя полностью заменить другим объектом.
arg(stack) -> oData(heap)