Search
Write a publication
Pull to refresh

Comments 2

Стоит только помнить, что если определить статическое поле того же типа, то при его инициализации конструктор экземпляра будет вызван до пользовательского кода в статическом конструкторе.

class Strange {
  public static Strange s = new Strange("first");

  static Strange(){
    Console.WriteLine("second");
  }

  Strange(string str){
    Console.WriteLine(str);
  }
}

class Program
{
    static  void Main(string[] args)
    {
        Strange strange = new("third");
    }
}
class Strange {
    public static Strange s = new Strange("first");

    static Strange(){
        Console.WriteLine("second");
    }

    public Strange(string str){
        Console.WriteLine(str);
    }
}

В таком случае у вас все будет по порядку - сначала идет работа стат конструктора (поля + сам конструктор). И как раз поле для статики будет первой (у нее сработает конструктор 1 раз только тк это статика). После стат конструктора идет обычный конструкор уже нашего класса. Всё логично и правильно. Главное не делать поле такого же класса обыным (не статик), а то стек упадёт

Sign up to leave a comment.

Articles