Статический конструктор и конструктор по умолчанию - PullRequest
4 голосов
/ 17 мая 2010

Нестатический класс может иметь как статический, так и конструктор по умолчанию.

В чем разница между этими двумя конструкторами? Когда мне использовать статический или статический конструктор по умолчанию?

Ответы [ 3 ]

9 голосов
/ 17 мая 2010

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

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

3 голосов
/ 17 мая 2010

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

0 голосов
/ 27 мая 2014

Срыв партии после того, как все ушли ...

Оба ответа верны, просто хотел добавить эту ссылку: Статические конструкторы (Руководство по программированию в C #) .

Цитируя их:

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

Их свойства:

  • Статический конструктор не принимает модификаторы доступа или не имеет параметров.
  • Статический конструктор вызывается автоматически для инициализации класса перед созданием первого экземпляра или ссылками на любые статические члены.
  • Статический конструктор не может быть вызван напрямую.
  • Пользователь не может контролировать выполнение статического конструктора в программе.
  • Типичное использование статических конструкторов - это когда класс использует файл журнала, а конструктор используется для записи записей в этот файл.
  • Статические конструкторы также полезны при создании классов-оболочек для неуправляемого кода, когда конструктор может вызывать метод LoadLibrary.
  • Если статический конструктор выдает исключение, среда выполнения не вызовет его во второй раз, и тип останется неинициализированным в течение всего времени существования домена приложения, в котором выполняется ваша программа.

Вы можете перейти по ссылке выше для демонстрации и примера кода.

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