问题是:在这段代码的末尾,ptArray [0] .X的值是3.33还是1.11?
感谢。
class MyPoint
{
public double X, Y;
public MyPoint(double x, double y)
{
X = x;
Y = y;
}
}
MyPoint[] ptArray = new MyPoint[2];
ptArray[0] = new MyPoint(1.11, 2.22);
MyPoint first = ptArray[0];
// Am I changing ptArray[0] here or not?
first.X = 3.33;
first.Y = 4.44;
答案 0 :(得分:5)
您不会更改ptArray[0]
本身,因为这是对MyPoint
实例的引用。但是,您正在更改其引用的对象中的数据。所以如果你这样做:
first.X = 3.33;
Console.WriteLine(ptArray[0].X);
它确实打印出3.33。
请注意,如果MyPoint
是结构而不是类,则不会为真。虽然拥有可变的结构是另一个痛苦的领域......
答案 1 :(得分:0)
3.33
因为MyPoint
是类,而不是标准Point
,即struct
答案 2 :(得分:0)
您可以尝试执行代码并将ptArray [0]的输出打印到控制台。
试试这个
Console.WriteLine(ptArray[0].X + " " + ptArray[0].Y);
然后你会看到它被改为3.33,4.44