C#=意思是2个不同的东西

use*_*293 3 c#

我怀疑这背后有一些非常重要的东西,我完全没有注意到.我可以写

int b = 5;
int a = b;
a = 2; 
Run Code Online (Sandbox Code Playgroud)

从我能说的最好,这给了我两个独立的变量.最初,a设置为5,但是我可以在不改变b的情况下将a更改为2

但是,我可以写

double[] b = { 1, 2, 3, 4};
double[] a = b; 
a[2] = 9; 
Run Code Online (Sandbox Code Playgroud)

现在看来,我没有2个独立的变量,而是对同一个实体有2个引用.现在改变a [2]会改变b [2].这是怎么回事?

Ste*_*ook 6

C#中有两种类型的变量.第一种称为"价值"类型.为其分配值时,该值将复制到该位置,因此在您编写时

int b = a;
Run Code Online (Sandbox Code Playgroud)

您正在将a的值复制为b.

但是,还有一个"参考"类型.这只复制了对变量的引用 - 换句话说,它获得了变量的一种句柄,因此当对该变量进行更改时,它们会反映在这两个位置.

值类型包括structs和所有基元 - 整数,双精度,字符等,字符串除外.参考类型是其他一切.

一些评论者已经提供了很好的链接,所以我不会在这里添加任何内容.