2011-10-11 125 views
0

第一篇文章太嗨! (請糾正我,如果我使用某個術語錯誤)從創建的實例調用方法

我有一個類在其中創建另一個類名爲Player(讓我們稱之爲實例播放器)的實例的屏幕。現在,在屏幕上我有一個名爲ResetHUD的方法,我想從Player調用。

我該怎麼做? ResetHUD中唯一的代碼是1行,它將變量設置爲另一個變量。據我所知,我可以使用EventHandler(但因爲ResetHUD不需要任何參數,所以我想我使用的是錯誤的)或委託(我不知道如何使用)。

幫助表示讚賞!

+1

請將您的代碼放在Q中,如果可以的話 –

回答

0

這聽起來像你有一個遏制關係......屏幕對象包含一個(或更多?)播放器對象。

當屏幕創建播放器時,它可以在播放器上設置一個屬性,指出父(創建)屏幕對象。

class Player 
{ 
    private Screen parentScreen; 

    public Player(Screen parentScreen) { this.parentScreen = parentScreen; } 

    public MyMethodThatHasToCallScreensMethod() 
    { 
     parentScreen.ResetHUD(); 
    } 
} 


class Screen 
{ 
    public Player CreatePlayer() 
    { 
     return new Player(this); 
    } 
} 

您還可以使用事件(事件的方式可以有參數,或不是,根據您的需要)。

這是我最喜歡的關於C#中事件和代表的教程。從每個步驟開始簡單並構建。

http://www.akadia.com/services/dotnet_delegates_and_events.html

+0

Th e屏幕包含1個或更多玩家,是的。 我想過把它作爲一個參數來傳遞,但它似乎是不好的做法,或者只是不好的做法。我會閱讀代表和事件。謝謝! –

0

將一個自選屬性上Player類。當您創建播放器類時,將該屬性設置爲您的屏幕類。您現在可以參考屏幕,您可以從播放器內部撥打電話。

0

那麼,東西Player需要有一個參考Screen實例。選項:

  • 當您創建Player,通過this的構造函數,以便它可以記住它屬於
  • ScreenPlayer創建事件,並從Screen
  • 訂閱它一路傳遞Screen作爲涉及的方法調用鏈的參數(這可能不適用於您的情況)
相關問題