获取更新的int值

Muh*_*han 1 c# value-type reference-type

第一个代码段:

object a = 10;
object b = a;
Console.WriteLine("b :"+ b);
a = 20;
Console.WriteLine("after a updateb :" + b);
Run Code Online (Sandbox Code Playgroud)

我有这个代码片段它的答案是10和10(IMO!它应该是10和20因为我使用引用类型而不是像int这样的值类型).我希望如果变量变为更改,则应更新其分配的var.我知道使用它是不可能的:

第二个代码段

int a = 10;
int b = a;
Console.WriteLine("b :" + b);
a = 20;
Console.WriteLine("after a updateb :" + b);
Run Code Online (Sandbox Code Playgroud)

因为上面的代码只会复制值.但是第一个代码片段有什么问题?我怎样才能做到这一点

Pan*_*vos 9

两个片段都返回10.两个都是正确的.

在第一种情况下,两个ab坚持的10盒装实例盒装当你存储一个不同的参考实例不会丢失参考a.

在第二种情况下,b持有一个a值的副本.

如果你想b持有一个引用a你应该已经习惯ref int声明该变量持有一个引用.这是C#7中的一个新功能:

int a = 10;
ref int b = ref a;
Console.WriteLine("b :" + b);
a = 20;
Console.WriteLine("after a updateb :" + b);
Run Code Online (Sandbox Code Playgroud)

返回

b :10
after a updateb :20
Run Code Online (Sandbox Code Playgroud)