Книга: C# для профессионалов. Том II
Статические конструкторы
Статические конструкторы
C# допускает также концепцию статического конструктора, который выполняется только один раз и может использоваться для инициализации статических переменных. Концепция не имеет прямого эквивалента в C++.
class MyClass {
static MyClass() {
// код статического конструкторе
}
Статические конструкторы очень полезны тем, что позволяют инициализировать статические поля с помощью значений, которые определяются во время выполнения (например, они могут задаваться значениями которые считываются из базы данных). Такой результат возможен в C++, но требует определенной работы, и решение обычно выглядит беспорядочным. Наиболее общий подход должен иметь функцию, которая обращается к статическим переменным членам, и функция будет реализована таким образом, что она задает значение переменной при первом вызове.
Отметим, что статический конструктор не имеет спецификатора доступа, он не объявляется как открытый, закрытый или как-нибудь еще. Спецификатор доступа не будет иметь смысла, так как статический конструктор вызывается только средой выполнения .NET, когда загружается определение класса. Он не может вызываться никаким другим кодом C#.
C# не задает точно, когда будет выполнен статический конструктор, за исключением только того, что это произойдет после инициализации всех статических полей, но перед тем, как будет создан какой-либо объект класса, или там, где статические методы класса реально используются.
- 7.15. Статические методы
- Статические методы
- Конструкторы по умолчанию
- 9.2. Классы и конструкторы
- Конструкторы
- Статические классы
- Статические члены
- Статические данные, формы и CGI-сценарии
- Статические и динамические библиотеки
- Статические параметры
- 8.1. Статические библиотеки
- Лекция 7. Статические структуры: классы