2014-11-21 98 views
2
class Game 
{ 
    byte[,] map = new byte[5, 5]; 
    Player p; 

    public Game() 
    { 
     p = new Player(); 
    } 

    public void Update() 
    { 
     p.Update(); 
    } 
} 

class Player 
{ 
    public Player() 
    { 
     //init... 
    } 

    public void Update() 
    { 
     //this code needs map 
    } 
} 

我怎樣才能達到GamemapPlayer.Update()?當然,最有意義的解決方案是將map參數添加到Player.Update()。但這種方式對我來說似乎是錯誤的。我最近閱讀C++書籍並瞭解指針。我正在考慮在Player類中添加指向map的指針,並在Player.Update()中使用它。我知道C#也有指針,但從未使用它們。在這種情況下使用它們是好事嗎?或者也許有更好的解決方案,這種情況不涉及指針?我知道我在OOP很糟糕。兩個課堂互動

+1

指針?不是。它是C#,而不是C++。這不適合C#中的指針。 – MarcinJuraszek 2014-11-21 19:20:15

+1

你應該返回一些東西。週期可能會在設計中引起問題。 – 2014-11-21 19:20:16

+2

爲什麼你不想將'map'的值從'Game.Update()'傳遞給'Player.Update()'?或者,如果你想保護'map'實例,那麼你可以將'Game'引用傳遞給'Player.Update()',然後在'Game'中提供方法或屬性來訪問'map'中的信息而不會暴露'map'對象本身。請注意,C#引用類型值(即「引用」)大致等同於C++指針。您不需要使用實際的C#指針來完成相同的結果。 – 2014-11-21 19:21:45

回答

3

顯然,您需要找出引用類型是什麼以及對象引用是什麼。這對於使用C#非常重要。由於你的兩個類都是引用類型,所以你用這個類型聲明的所有變量都是對象的引用。

您只需將Game傳遞給Player.Update即可傳遞對現有遊戲的引用。

+0

你的意思是它應該像'Player.Update(遊戲a)'? – foxneSs 2014-11-21 19:30:57

+1

非常。您可以以任何喜歡的方式將參考傳遞給您的遊戲。 – usr 2014-11-21 19:32:22