我怀疑这背后有一些非常重要的东西,我完全没有注意到.我可以写
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].这是怎么回事?
C#中有两种类型的变量.第一种称为"价值"类型.为其分配值时,该值将复制到该位置,因此在您编写时
int b = a;
Run Code Online (Sandbox Code Playgroud)
您正在将a的值复制为b.
但是,还有一个"参考"类型.这只复制了对变量的引用 - 换句话说,它获得了变量的一种句柄,因此当对该变量进行更改时,它们会反映在这两个位置.
值类型包括structs和所有基元 - 整数,双精度,字符等,但字符串除外.参考类型是其他一切.
一些评论者已经提供了很好的链接,所以我不会在这里添加任何内容.