2010-05-17 2 views
4

Нестационарный класс может иметь как статический, так и стандартный конструктор одновременно.Статический и стандартный конструктор

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

ответ

8

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

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

3

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

0

сбоями партии после того, как все вышло ...

Оба ответа верны, просто хотел бы добавить эту ссылку: Static Constructors (C# Programming Guide).

Цитирование их:

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

Их свойства:

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

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

Смежные вопросы