2012-05-20 122 views
0

我想在我的主類中創建幾個嵌套類。C#嵌套類

public class MyPlayer : Player 
{ 

    public bool TargetEnemy() 
    { 
     return true; 

    } 

    public class Movement 
    { 
     public uint aInt = 1; 

     public TurnLeft() 
     { 

     } 
    } 

    public class ActionBar 
    { 

    } 
} 

我有很多不同類別,這樣我就可以通過訪問MyPlayer類出來的代碼,而無需將其傳遞給所有的人我剛剛創建保存該變量爲一個靜態類。我可以使用Main.Units.MyPlayer.Movement訪問MyPlayer-> Movement,但是這並沒有鏈接到我在靜態類中定義的MyPlayer實例。

我希望能夠做MyPlayer-> Movement-> TurnLeft()爲例。我將如何實現這一目標?感謝您的回答。

+0

'多inheritance'是一個完全不同的事情(不存在in'.Net ')我刪除了該標籤。 – gdoron

回答

2

您可能會誤認爲類的構成類嵌套的概念。爲了在Player課程中有一個Movement實例,您可以定義私人字段movement和公共屬性Movement來訪問它。

public class Player 
{   
    public bool TargetEnemy() 
    { 
     return true;    
    } 

    private Movement movement = new Movement(); 

    public Movement Movement 
    { 
     get { return movement; } 
     set { movement = value; } 
    } 
} 

public class Movement 
{ 
    public uint aInt = 1; 

    public TurnLeft() 
    { 

    } 
} 

public class ActionBar 
{ 

} 

然後,你就可以創造Player類的實例並訪問其包含Movement

Player myPlayer = new Player(); 
myPlayer.Movement.TurnLeft(); 
+0

謝謝,這對我有幫助!現在就開始工作 – user1127093

+0

由於「運動」類似乎是可變的,我將刪除「運動」屬性的二傳手。 – CodesInChaos

+1

@CodeInChaos:好點,但是我不能從課堂設計中推斷出它是否應該是可變的。我懷疑它不應該,而且'TurnLeft'實際上應該被一些多態的'Move'方法替代(被特定類型的運動的派生類重寫)。 – Douglas

0

然後MyPlayer應該有一個參考Movement實例。

public class MyPlayer : Player 
{ 
    public static Movement movement = new Movement(); 
    ... 
} 
+0

謝謝這幫助我! – user1127093

+0

@ user1127093。我很高興能夠提供幫助。 – gdoron