2011-12-31 98 views
-5
class State 
{ 
    public void FalconPunch() 
    { 
     Console.Writeline("Punched.") 
    } 
} 

class Testy 
{ 
    public void TryThis() 
    { 
     State.FalconPunch(); 
    } 
} 

當類Testy中的TryThis()方法調用State.FalconPunch()時,爲了執行FalconPunch()方法,實例化了State類(甚至是片刻)嗎?在C#中,如果我從不是實例化的不同類調用一個方法,那麼當該方法被調用時,該類是否實例化?

我想確定是否需要使用靜態狀態,以便在我的遊戲中使用所有AI代理。它在移動平臺上,所以我正在努力寫出優化的想法。

+4

這首先不會編譯。 (對不起,獵鷹隊長...) – BoltClock 2011-12-31 17:50:51

+0

你爲什麼不先試試?正如很多人所說的,這段代碼甚至不會編譯。在發佈您的問題之前,您至少可以嘗試一下。 – comecme 2011-12-31 18:18:56

+0

我確實嘗試過,這只是我的錯誤 - 在我使用的引擎中,類在GameObject上被調用的方式,它已經被視爲一個實例,因此它的工作原理並不是靜態的。 – GameDesigner 2011-12-31 21:32:15

回答

7

因爲它不是static,所以不能調用FalconPunch而不參考實例。

您必須先手動創建一個新實例。

簡稱: new State().FalconPunch()

完成: var s = new State(); s.FalconPunch();

+0

當然,你總是可以使方法成爲'static',在這種情況下,你將不必首先創建一個類的實例。這可能是提問者正在尋找的東西。 – 2011-12-31 19:27:49

+0

蟬:謝謝。代碼格雷:是的,也謝謝你。 – GameDesigner 2011-12-31 21:33:06

4

FalconPunch不是一個靜態方法,所以這不會編譯。您必須專門創建一個實例才能調用該方法。

相關問題