2011-12-31 55 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不是一个静态方法,所以这不会编译。您必须专门创建一个实例才能调用该方法。

相关问题