2016-10-07 66 views
1

我有這段代碼:如何一個變量綁定到另一個

Brick brick1= new Brick(parent.X - 1,parent.Y); 

X & y是整數,

Basiclly我想做的事是:當父磚變更X ,brick1的x值發生變化,其中它的值爲parent.X,brick1.X將始終等於parent.X - 1

有沒有辦法實現這個?

+0

指針將如何幫助?在C#中,類的引用類似於指針。 –

+1

你需要的是一個對其他磚塊和一個吸氣劑的參考,它可以即時計算'X'。 –

+0

您需要使Brick類知道其父類,才能添加父類型的字段。並更改構造函數,以便您可以使用新磚(父)。 –

回答

3

假設Brick不是一個結構,你可以這樣做。你也可以通過繼承一個ChildBrick類來做到這一點,但除非你需要增加複雜性,至少在我看來,允許Brick有一個父親是Brick併爲父代添加一個構造函數更簡單。然後,如果您檢索一個值,並且需要從父級計算值,那麼您只需檢查是否有父級並據此進行計算。

class Brick 
{ 
    private Brick _parent; 
    private int _x; 
    private int _y; 

    Brick(Brick parent) {_parent = parent);} 
    Brick(int x, int y) 
    { 
     _x = x; 
     _y=y; 
    } 

    public int X 
    { 
     get 
     { 
      if (_parent != null) return _parent.X - 1; 
      return _x; 
     } 
    } 
    public int Y 
    { 
     get 
     { 
      if (_parent != null) return _parent.Y; 
      return _y; 
     } 
    } 
} 
0

只是要brick1派生類與計算的只讀屬性

public class childBrick: Brick 
{ 
    public new float X 
    { 
     get { return base.X - 1.0 } 
     private set { base.X = value; } 
    } 
    public static Brick Make(float x, float y) 
    { 
     return new childBrick 
     { 
      X = x; 
      Y = y; 
     } 
    } 
} 

使用這樣

Brick brick1 = childBrick.Make(parent.X - 1,parent.Y); 
+1

不確定繼承是OP需要的。在他的代碼中,「parent」看起來不是父類,而是與brick1的父級關係相同類的對象 –

+0

,但由於childBrick *是* Brick,它可以很好地完成他想要的任務 –

相關問題