• Microsoft .NET
  • C#.NET
  • Решение 11 распространенных проблем в многопоточном коде

.NET глазами дельфийца. C# - Статические конструкторы

ОГЛАВЛЕНИЕ

 

Статические конструкторы

Некоторый семантический аналог статическим конструкторам вDelphi - секция initialize.

К сожалению, вDelphi порядок вызова секций initialize соответствует порядку подключениямодулей. Такая практика может приводить к неожиданным ошибкам - первоначальнорассчитывая на конкретный порядок подключения модулей, можно случайно впроцессе разработки изменить этот порядок и в результате, например, получитьобращение к несуществующему или некорректно инициализированному глобальномуобъекту программы.

C# предоставляет более строгое объектное решение, которое, в частности,позволяет управлять правами доступа:


class A {
static protected A GlobalA;
static A() { GlobalA = new A; }
}

В C# порядок работыстатического конструктора определен только на уровне класса, при наличии женескольких классов со статическими конструкторами порядок их активизации нефиксирован. Такой подход заставляет более тщательно проектировать программу ссамого начала и исключает появление в последующем ошибок, аналогичных описаннойвыше.