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)
因为上面的代码只会复制值.但是第一个代码片段有什么问题?我怎样才能做到这一点
两个片段都返回10.两个都是正确的.
在第一种情况下,两个a和b坚持的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)