我是C#中的新成員。我來自Java世界。所以我很困惑與下面的代碼:通過引用檢索屬性
class A
{
private PointF point;
public A(PointF point)
{
this.point = point;
}
public PointF Position
{
get { return point; }
}
}
我想改變位置屬性的X座標,所以我執行:
A a = new A(new PointF(1,2));
PointF p = a.Position;
p.X = 100;
Console.WriteLine(a.Position.X); // <--- I have 1 here!
我不知道爲什麼輸出不是?據我瞭解,我收到了有Position屬性的私人領域的參考。我對嗎?
我可以進行變更而增加一套屬性和傳播位置新的PointF對象的屬性?
不,你不能。由於PointF是結構,它是值類型。 – Disposer 2012-03-06 13:10:36
是的,你可以。你可以粘貼你的PointF的代碼,我認爲PointF.X上的setter沒有做它應該做的事情。 - 編輯:哦,我沒有意識到PointF是一個結構,而不是一個類...所以你的'p'變量是從a.Position複製一個全新的結構。如果您希望將其作爲參考,則必須將PointF封裝在類中或將新類型定義爲類。或者你可以使用Point類。 – 2012-03-06 13:12:20
你確定嗎?我測試了它的工作。你也可以在你的示例中添加PointF類。編輯:哈哈我沒有看到struc都不 – Guillaume 2012-03-06 13:14:43