Ключевое слово
Constructor , используемое в объявлении
Sub
заставляет процедуру выполняться до кода модуля уровня. Процедуры,
определенные как конструкторы, можно использовать так же, как обычные
процедуры, то есть, они могут быть вызваны из кода уровня модуля, а также из
других процедур.
Процедура должна иметь пустой список параметров. Ошибка времени компиляции
будет создана, если ключевое слово
Constructor ,
используемое в объявлении процедуры имеет один или несколько параметров. В
наборе перегруженных процедур, только один (1) конструктор может быть
определен в связи с неоднозначностью наличия нескольких процедур, которые не
имеют аргументов.
В одном модуле, конструкторы обычно выполняются в обратном порядке, а не в
том, в котором они определены.
Атрибут
priority представляет собой целое число от 101 до
65535, которое может использоваться, чтобы заставить конструкторы
выполняться в определенном порядке. Значение
priority не
имеет конкретного смысла, только отношение числа с другими приоритетами
конструктора. 101 имеет самый высокий приоритет и выполняются в первую
очередь. Все конструкторы, имеющие атрибут
priority
выполняются до конструкторов, не имеющих атрибута. Значение приоритета
65535 такое же, как если бы мы не присваивали значения приоритета.
Модуль может определить несколько процедур конструктора, и несколько модулей
могут определить дополнительные конструкторы , если никакие два
Public
конструктора на разделяют такое же
procedure_name.
При компоновке с модулями, также определенными с конструкторами, порядок
выполнения не гарантируется во время компоновки, если только не указан
атрибут
priority. Поэтому особое внимание следует уделить
при использовании конструкторов, которые могут вызываться во вторичных
модулях при определении конструктора. В таком случае целесообразно
использовать один конструктор, который явно вызывает процедуры инициализации
в этих модулях.
См. также