使用C#7.3。 在此代码中:
int a = 0;
ref int b = ref a;
...
...
b = ref a;
b = a;
最后两个分配是否完全等效(分配参考),尽管一个分配a的值,而另一个分配a的参考?如果可以,为什么?
如果没有,为什么允许为ref
变量赋值(最后一行)?
答案 0 :(得分:2)
不,他们不一样;如果使用更多的值,则更清楚;这里的a
只是要初始化的虚拟对象-重要的一点是c
和d
的用法如何不同;使用b = ref c;
,我们更新b
指向c
的引用,因此,如果事后查看c
:则有所不同;使用b = d;
,我们更新了b
所指向的事物的值,因此其行为截然不同-b
仍指向变量{{1 }}。
c
如果我们按照指针进行比较,并说 int a = 0;
ref int b = ref a;
int c = 1, d = 2;
b = ref c;
b = 42;
System.Console.WriteLine(c); // 42
System.Console.WriteLine(d); // 2
b = d;
b = 64;
System.Console.WriteLine(c); // 64
System.Console.WriteLine(d); // 2
是b
指针:
int*
是b = ref a;
b = &a
是b = a