一千萬個為什麽

搜索

更改array []運算符返回的類的值

問題是:在這段代碼的末尾,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;

最佳答案

您沒有更改 ptArray [0] 本身,因為這是對 MyPoint 實例的引用。但是,您正在更改其引用的對象中的數據。所以如果你這樣做:

first.X = 3.33;
Console.WriteLine(ptArray[0].X);

它確實打印出3.33。

請註意,如果 MyPoint 是結構而不是類,則不會為真。雖然有可變的結構是另一個痛苦的境界......

轉載註明原文: 更改array []運算符返回的類的值