Меню Visual Basic

       

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


Временем жизни переменной называется время, в течение которого переменная может иметь значение. Значение переменной может меняться на протяжении ее времени жизни, но в течение этого времени она обязательно имеет какое-либо. Когда переменная теряет область определения, она более не имеет значения.

В начале выполнения процедуры все переменные инициализируются. Числовая переменная получает значение 0, строка переменной длины получает значение пустой строки (""), а строка фиксированной длины заполняется ASCII символом 0 или Chr(0). Переменные типа Variant получают при инициализации значение Empty. Каждый элемент массива переменных с определяемым пользователем типом при инициализации получает значение, которое он получил бы, если бы являлся одиночной переменной.

При описании объектной переменной для нее выделяется память, но ее значение определяется как Nothing до тех пор, пока ей не присвоена ссылка на объект с помощью инструкции Set.

Если значение переменной не изменяется во время выполнения программы, она сохраняет значение, полученное при инициализации, до тех пор, пока не потеряет область определения.

Переменная, описанная с помощью инструкции Dim на уровне процедуры, сохраняет значение до окончания выполнения процедуры. Если процедура вызывает другие процедуры, переменная сохраняет свое значение, пока не закончится выполнение и этих процедур.

Если переменная уровня процедуры описана с помощью ключевого слова Static, она сохраняет свое значение до тех пор, пока программа выполняется в каком-либо модуле. По завершении работы всей программы переменная теряет свою область определения и свое значение. Ее время жизни совпадает с временем жизни переменной уровня модуля.

Переменная уровня модуля отличается от статической переменной. В стандартном модуле или в модуле класса она сохраняет свое значение до завершения выполнения программы. В модуле класса она сохраняет значение пока существует экземпляр этого класса. Переменные уровня модуля занимают память, пока их значения не удалены, поэтому их следует использовать только при необходимости.

Если перед инструкциями Sub или Function имеется ключевое слово Static, значения всех переменных уровня процедуры сохраняются между вызовами процедуры.



Содержание раздела