1
5
一般来说,CLR不会对不可变类型做任何特殊的处理。它们的处理方式与任何其他类型相同。 |
2
2
编译器(而不是CLR)有可能在生成IL时巧妙地使用它。我不知道是否有,老实说也不在乎:如果没有,也许将来会有。如果是这样的话,也许将来不会(一个边缘案例显示优化是不明智的。 我很高兴地想“如果这是只读的,那么编译器(或者CLR)可能会用它做一些聪明的事情,所以这将是一个免费的改进”。这将是一个 自由的 改进,因为我永远不会做一些只读的东西来利用这样的优化,即使我知道它确实这样做,这样的节省是巨大的。我只会把一些东西变成只读的,只要它是只读的。我经常这样做是因为我的风格倾向于大量使用不可变对象,但我只会这样做,因为对象在逻辑上是不可变的,而不是为了追求一些优化而使其不可变,然后不得不绕过不可变性。 当然,也有一些方法 你 可以巧妙地处理不可变对象(特别是在计算不同多线程场景对代码的影响时)。 |
3
0
在CLR的透视图中,值是可变的。例如:CLR可以更改对象的数据以执行缓存。 结构的用户不能更改它的值,但是CLR可以在几种情况下更改它。这就是为什么CLR不能在自身上实施不变性,也不能在运行时对其进行中继。 |
4
0
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |