静态方法调用

时间:2011-10-20 04:33:55

标签: oop static constructor static-methods

我有一个类有一个静态方法,如下所示。

class A
{
  A()
  {
     Initialize();
  }

  static void fm()
  {
    ;
  }

  void Initialize()
  {
     ;
  }

}

现在在程序中,如果我调用A.fm(),它是否会调用Initialize方法?

3 个答案:

答案 0 :(得分:2)

假设它使用的语言类似于C ++,Java或C#:

不会。构造函数仅在使用new时或在该类型的变量(在本例中为A)被声明为局部变量时被调用。

答案 1 :(得分:1)

您应该寻找静态构造函数,如果是这样,如果您使用c#,您可能想要运行此代码。静态构造函数授予您在运行类中的任何其他代码之前运行初始化代码

public class A
{
    public static void Method()
    {
        Console.WriteLine("METHOD!!!");
    }

    public void Method2()
    {
        Console.WriteLine("INSTANCE METHOD!");
    }

    static A()
    {
        Console.WriteLine("STATIC CTOR");
    }
}

class Program
{
    static void Main(string[] args)
    {
        A.Method();
        new A().Method2();
        A.Method();
        A.Method();
        A.Method();
        A.Method();
        A.Method();
        A.Method();
    }
}

然后是输出!

STATIC CTOR
METHOD!!!
INSTANCE METHOD!
METHOD!!!
METHOD!!!
METHOD!!!
METHOD!!!
METHOD!!!
METHOD!!!

答案 2 :(得分:0)

在您的情况下,不会调用Initialize,因为它在默认构造函数中。如果你的默认构造函数也是静态的,那么将首先按顺序调用Initialize方法,之后将调用fm()方法。