Указатель типа только для чтения может перемещаться после сжатия GC и перемещаться в .NET? - PullRequest
1 голос
/ 19 декабря 2011

Мы все знаем, что ссылка на переменную ссылочного типа readonly не может измениться, но GC может изменить ее.Что происходит, когда ГХ изменяет указатель типа readonly?

Ответы [ 3 ]

0 голосов
/ 19 декабря 2011

Если вы спрашиваете, что происходит, когда GC перемещает переменную типа readonly

Тогда ответа ничего не происходит. GC перемещает позицию как обычно. Это все

Для GC перемещение типа не только для чтения аналогично перемещению типа только для чтения. Концепции ReadOnly и nonReadOnly предназначены для программистов, а не для GC

0 голосов
/ 19 декабря 2011

Прежде всего, readonly ссылки могут быть переназначены внутри конструкторов. Что касается перемещения указателей в GC, то в этом нет ничего особенного, чем то, что происходит с другими обычными указателями, за исключением того, что пользовательский код не может изменить то, на что они указывают.

По существу readonly только мешает ВАМ изменить ссылку, но не мешает среде выполнения делать то, что она должна делать.

0 голосов
/ 19 декабря 2011

Readonly на самом деле не только для чтения ... например, отражение может изменить поля только для чтения.Таким образом, это ничем не отличается от любой другой ссылки (поскольку GC является частью виртуальной машины и намного сильнее, чем отражение).

Изменение значения string.Empty всегда хорошо дляхихикать ... (кашель, я бы никогда этого не сделал, кашель)

...