在这里输入代码`我有一个名为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/

10-16 14:04
查看更多