.NET глазами дельфийца. C# Страница 14. Статические конструкторы
|
Страница 14 из 19
Статические конструкторыНекоторый семантический аналог статическим конструкторам вDelphi - секция initialize. К сожалению, вDelphi порядок вызова секций initialize соответствует порядку подключениямодулей. Такая практика может приводить к неожиданным ошибкам - первоначальнорассчитывая на конкретный порядок подключения модулей, можно случайно впроцессе разработки изменить этот порядок и в результате, например, получитьобращение к несуществующему или некорректно инициализированному глобальномуобъекту программы. C# предоставляет более строгое объектное решение, которое, в частности,позволяет управлять правами доступа: class A { static protected A GlobalA; static A() { GlobalA = new A; } }
В C# порядок работыстатического конструктора определен только на уровне класса, при наличии женескольких классов со статическими конструкторами порядок их активизации нефиксирован. Такой подход заставляет более тщательно проектировать программу ссамого начала и исключает появление в последующем ошибок, аналогичных описаннойвыше. |