Possible Duplicate:
What is boxing and unboxing and what are the trade offs?




你好
据我了解:
当我将值类型的数据分配给(引用)类型的对象变量时,将其装箱,结果不是实际的引用,因为它指向存储在堆中的值的副本。那正确吗?
谢谢

最佳答案

好吧,不完全是。 (我误读了您的帖子。)

结果是一个真实的引用-但是它没有引用您的原始变量。它引用堆上的一个对象,其中包含装箱时变量保存的值的副本。特别是,更改变量的值不会更改框中的值:

int i = 10;
object o = i;
i = 11;
Console.WriteLine(o); // Prints 10, not 11


C#不允许您直接访问框内的值-您只能通过取消装箱并制作副本来获取它。另一方面,C ++ / CLI允许单独访问,甚至更改框内的值。 (您仍然可以使用C#更改框中的值-例如,如果值类型实现某些接口并且接口方法使该值发生变化。)

通常,导致装箱的引用类型是“对象”,但它可能是值类型实现的某些接口,或者只是System.ValueType

关于c# - 拳击..我正确吗? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4732925/

10-13 08:11