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

abe*_*nci -3 .net c#

问题是:在这段代码的末尾,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;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

你不是在改变ptArray[0]自己,因为那是对实例的引用MyPoint.但是,您正在更改其引用的对象中的数据.所以,如果你这样做:

first.X = 3.33;
Console.WriteLine(ptArray[0].X);
Run Code Online (Sandbox Code Playgroud)

它确实打印出3.33.

请注意,如果是结构而不是类,则不会出现这种情况MyPoint.虽然拥有可变的结构是另一个痛苦的境界......