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

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

TestyクラスのTryThis()がState.FalconPunch()を呼び出すとき、FalconPunch()メソッドを実行するためにクラスの状態がインスタンシエートされますか?C#では、インスタンス化されていない別のクラスからメソッドを呼び出すと、そのメソッドが呼び出されたときにそのクラスがインスタンス化されますか?

ゲーム内のすべてのAIエージェントが使用するために、静的な状態が必要かどうかを判断しようとしています。モバイルプラットフォーム上にあるので、最適化を念頭に置いて記述しようとしています。

+4

最初はコンパイルされません。 (申し訳ありません、ファルコン大尉...) – BoltClock

+0

なぜあなたは最初にやったのですか?多くの人が言っているように、このコードはコンパイルされません。あなたは質問を投稿する前に少なくともそれを試してみることができます。 – comecme

+0

私はそれを試しました、それはちょうど私の間違いです - 私が使用しているエンジンでは、GameObjectでクラスが呼び出される方法は、すでにインスタンスと見なされているので、静的ではなく動作します。 – GameDesigner

答えて

7

staticではないため、インスタンスへの参照なしでFalconPunchに電話をかけることはできません。

新しいインスタンスを手動で作成する必要があります。

ショート: new State().FalconPunch()

コンプリート: var s = new State(); s.FalconPunch();

+0

もちろん、常に静的メソッドを作ることができます。この場合、クラスのインスタンスを最初に作成する必要はありません。それはおそらく、尋問者が探しているものです。 –

+0

蝉:ありがとう。 コードグレー:はい、ありがとうございます。 – GameDesigner

4

FalconPunchは静的メソッドではありませんので、これはコンパイルされません。メソッドを呼び出すには、具体的にインスタンスを作成する必要があります。

関連する問題