不,他们不一样;如果使用更多的值,则更清楚;这a
只是一个初始化的假人-重要的一点是用法c
和用法如何d
不同;与b = ref c;
我们更新参考该b
点到c
,所以如果我们看一下c
算账:它是不同的; 随着b = d;
我们更新指向的事物b
的价值,所以它的行为截然不同- b
仍然指向变量的位置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
是 *b = a
是的,我意识到我的问题是基于一种误解,因为我的问题中的两个变量都继续引用相同的实际存储。分配
a
to 的值b
只是尝试使用其自己的值更新引用的存储,而不会执行任何操作。