在C#中,如果我从一个未实例化的不同类中调用一个方法,那么在调用该方法时该类是否被实例化?

时间:2011-12-31 17:49:18

标签: c# memory memory-management

class State
{
    public void FalconPunch()
    {
        Console.Writeline("Punched.")
    }
}

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

当Testy类中的方法TryThis()调用State.FalconPunch()时,是否为了执行FalconPunch()方法而实例化了类State(即使是片刻)?

我正在尝试确定是否需要静态状态,以便我的游戏中的所有AI代理都可以使用。它在移动平台上,所以我在考虑优化时写作。

2 个答案:

答案 0 :(得分:7)

如果没有对实例的引用,则无法调用FalconPunch,因为它不是static

您必须先手动创建新实例。

短: new State().FalconPunch()

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

答案 1 :(得分:4)

FalconPunch不是静态方法,所以这不会编译。您必须专门创建一个实例才能调用该方法。