我试过了:

int i = 5;
object o1 = i; // boxing the i into object (so it should be a reference type)
object o2 = o1; // set object reference o2 to o1 (so o1 and o2 point to same place at the heap)

o2 = 8; // put 8 to at the place at the heap where o2 points

运行此代码后,o1中的值仍为5,但我期望为8。

我想念什么吗?

最佳答案

这不是C#中变量的工作方式。它与装箱值类型无关。

考虑一下:

object o1 = new object();
object o2 = o1;

o2 = new object();

您为什么期望o1o2包含对同一对象的引用?设置o2 = o1时,它们是相同的,但是一旦设置o2 = new object()o2的值(变量指向的内存位置)就会改变。

也许您想要做的事情可以像这样完成:
class Obj {
    public int Val;
}

void Main() {
    Obj o1 = new Obj();
    o1.Val = 5;
    Obj o2 = o1;
    o2.Val = 8;
}

Main的末尾,Valo1属性将包含8

关于c# - 如何从int引用类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13651543/

10-12 01:20