Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

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

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

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

Пример

Процедура демонстрирует изменение значения статической переменной

Private Sub C()

Static LS_E As Integer ‘при первом входе в процедуру переменная получает значение 0.

'При втором входе в процедуру значение переменной равно 2.

'При третьем входе – 4 и т.д., т.е. при каждом последующем входе в процедуру

'значение переменной увеличивается на 2.

Dim LO_F As Integer ‘при первом и каждом последующем входе в процедуру переменная

'получает значение 0. Значение, равное 1, теряется.

LS_E=LS_E+2 ’значение увеличивается на 2

LO_F= LO_F + 1 ’значение увеличивается на 1

End Sub

Важно

  • Объявление Static может быть указано только для локальных переменных.

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

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

  • Глобальные переменные сохраняют свои значения в течение всего времени выполнения программы проекта.

  • Время жизни локальной переменной – процедура, в которой она объявлена.

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

Пример

Рассмотрены три случая объявления переменной var_A: первый случай – переменная объявлена как локальная; второй случай – переменная объявлена на модульном уровне; третий случай – переменная объявлена как статическая.

Первый случай

Второй случай

Третий случай

Вызываемая процедура

Sub TheFirst()

Dim var_A as Integer

var_A = var_A+5

Value_A

Debug.Print var_A

End Sub

Dim var_A as Integer

Sub TheSecond ()

var_A = var_A+5

Value_A

Debug.Print var_A

End Sub

Sub TheThird()

Static var_A As Integer

var_A = var_A+5

Value_A

Debug.Print var_A

End Sub

Sub Value_A ()

If var_A=5 Then

var_A = var_A+1

Else

var_A=var_A+2

End If

End Sub

Sub Print_A_1()

TheFirst

TheFirst

End Sub

Sub Print_A_2()

TheSecond

TheSecond

End Sub

Sub Print_A_3()

TheThird

TheThird

End Sub

Все процедуры записаны в одном модуле. Во всех случаях вызываемая процедура Value_A одна и та же, исполняемые операторы процедур совпадают, но значения переменной var_A различны: первый случай - значения 5 и 5; второй случай – значения 6 и 13; третий случай - значения 5 и 10.