在GC压缩并在.NET中移动后,只读引用类型的指针可以移动吗?

时间:2011-12-19 15:44:57

标签: c# pointers reference readonly

我们都知道readonly引用类型变量的引用不能更改,但GC可以更改它。 GC更改readonly类型指针时会发生什么?

3 个答案:

答案 0 :(得分:0)

Readonly实际上并不是只读...例如,反射可以改变只读字段。因此,这与任何其他引用没有什么不同(因为GC是VM的一部分,并且比反射强得多)。

改变string.Empty的值总是有点傻笑......(咳嗽,我永远不会那样,咳嗽)

答案 1 :(得分:0)

如果您询问当GC移动只读类型

的变量时会发生什么

然后回答没有任何反应。 GC像往常一样移动位置。这就是全部

对于GC移动,非只读类型与移动只读类型相同。 ReadOnly和nonReadOnly概念适用于不是GC的程序员

答案 2 :(得分:0)

首先,可以在构造函数内重新分配readonly引用。至于GC移动指针,除了用户代码不能改变他们所指向的内容之外,它没有什么比其他普通指针发生的更特殊。

基本上readonly只会阻止您更改引用,而不会阻止运行时执行它应该执行的操作。