更改array []运算符返回的类的值

时间:2010-05-06 15:20:29

标签: c# .net

问题是:在这段代码的末尾,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;

3 个答案:

答案 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