Время жизни переменных

Время жизни – это тот период, в течение которого значение переменной сохраняется. Локальные переменные инициализируются при входе в процедуру или при первом присвоении, если переменная не объявлена. При выходе из процедуры память, отведенная локальной переменной, освобождается, и переменная теряет свое значение – Visual Basic "забывает" значения локальных переменных. Время жизни локальной переменной – процедура. Модульные переменные сохраняют значения в течение времени выполнения программы, записанной в том стандартном модуле или на том процедурном листе, на котором они объявлены. Глобальные переменные сохраняют свои значения в течение всего времени выполнения программы проекта.

Объявление Static позволяет сохранить значение локальной переменной при выходе из процедуры, в которой она так объявлена, т. е. продлить время ее жизни. При выходе из этой процедуры память, отведенная такой переменной, сохраняется, но становится временно недоступной. При повторном входе в данную процедуру статическая переменная имеет то же значение, которое было у нее перед выходом из этой процедуры. Время жизни статической переменной – модуль, в котором определена процедура, объявившая эту переменную.

Объявление Static может быть указано только для локальных переменных. Если ключевое слово Static использовано при объявлении процедуры или включена опция All Local variables as Static (рис.16.1), то при вставке новой процедуры командой Insert Procedure все локальные переменные процедуры будут статическими.

Инициализация переменных

При входе в процедуру локальные переменные (за исключением переменных, объявленных как Static) автоматически получают начальные значения в соответствии с типом переменной (см. таблицу 16.4). Переменные, объявленные на уровне модуля, инициализируются при первом входе в модуль, статические переменные – при первом входе в процедуру, в которой они объявлены. На практике для того, чтобы избежать неясностей, рекомендуется явным образом инициализировать переменную (присваивать ей начальное значение), прежде чем использовать ее в выражении.

Таблица 16.4. Инициализация переменных
Тип Начальное значение
Integer, Long, Single, Double
String (переменная длина) Пустая строка (кол-во символов равно нулю)
String (фиксированная длина) Заполняется символами, имеющими нулевой ASCII-код, иными словами Chr(0)
Variant Empty
Object Nothing