Вызов статического метода - PullRequest
       21

Вызов статического метода

0 голосов
/ 20 октября 2011

У меня есть один класс, у которого есть один статический метод, как показано ниже.

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

  static void fm()
  {
    ;
  }

  void Initialize()
  {
     ;
  }

}

Теперь в программе, если я вызову A.fm (), она будет вызывать метод Initialize или нет?

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

Предполагается, что это на языке, таком как C ++, Java или C #:

Не будет. Конструкторы вызываются только тогда, когда используется new или когда переменная этого типа (в данном случае A) объявлена ​​как локальная переменная.

1 голос
/ 20 октября 2011

Вы должны искать статический конструктор, если это так, и если вы используете 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!!!
0 голосов
/ 20 октября 2011

В вашем случае Initialize не будет вызываться, как внутри конструктора по умолчанию. Если вы сделаете ваш конструктор по умолчанию также статическим, то метод Initialize будет вызываться первым по порядку, а после этого будет вызываться метод fm () ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...