在这里输入代码`我有一个名为curPos的变量,它存储两个整数。
我有第二个变量prevPos,它存储两个整数。
所以我有以下代码
Console.WriteLine("{0}, {1}", curPos[0], curPos[1]); // 1, 25
Console.WriteLine("{0}, {1}", prevPos[0], prevPos[1]); // 1, 25
curPos[0]++;
Console.WriteLine("{0}, {1}", curPos[0], curPos[1]); // 2, 25
Console.WriteLine("{0}, {1}", prevPos[0], prevPos[1]); // 2, 25
这怎么可能,当我一行一行地显示到最后一行时,这是确切的代码
http://www.youtube.com/watch?v=qkPKm7xEhac&feature=youtu.be
最佳答案
它们可能是两个不同的变量,但它们指向同一对象。
变量是一个编译时构造,为存储位置命名。在运行时,通常将存储位置称为对象。
如果你说
var foo = int[]{0,1};
var bar = foo;
您有一个可以通过两个变量访问的数组。以后不管你做什么都没关系
foo[0]++;
或您输入
bar[00]++;
结果是一样的。数组中的第一个整数加1。
只要变量的类型是引用类型(例如数组),这都是正确的。如果变量的类型是值类型(例如int或Point),则任何赋值都会创建一个副本
Point foo = new Point();
var bar = foo;
在这种情况下,bar和foo不指向同一对象
关于c# - 变数…另一个变数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13540740/