Скачиваний:
22
Добавлен:
02.05.2014
Размер:
108.03 Кб
Скачать

Использование переменных с одним и тем же именем в различных уровнях области действия

Имя переменной уникально в области ее действия. Однако можно иметь переменные с одним и тем же именем на разных уровнях действия. Когда переменные имеют одно и то же имя, но разные области действия, VB использует переменную с наиболее локальной областью действия.

Например, к предыдущему листингу добавляется:

Sub AnotherMessage ( )

Dim HelloMsg 'локальное объявление

HelloMsg = "Привет"

MsgBox HelloMsg, , " Еще одно окно сообщения"

End Sub

В первых двух процедурах переменная внутри процедуры не объявляется, поэтому используется переменная модульного уровня. В последней процедуре работает локальная переменная HelloMsg, объявленная в процедуре, а переменная модульного уровня с этим же именем в этой процедуре недоступна.

Для того чтобы переменная имела видимость в пределах модуля при ее объявлении используется, как правило, оператор Private, а не Dim. Хотя Dim также используется, когда требуется обеспечить совместимость программ с более ранними версиями VB.

Объявление переменной с помощью слова Global, вместо операторов Private и Dim, делает ее доступной в пределах всего проекта. При этом переменная также должна быть объявлена в разделе объявлений модуля.

Для открытия глобальной процедуры используется оператор Public, например: Public Sub Password( )

По умолчанию при открытии глобальной процедуры слова Public или Global, как правило, опускаются, и запись выглядит: Sub Password( ).

Для открытия локальной процедуры обязательно используется слово Private. Например: Private Sub Form_Load( )

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

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

Private Static Sub cmdStart_Click( )

Правила того, как долго переменные удерживают свое значение

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

Значения, присвоенные переменным, сохраняются только до тех пор, пока переменная в области ее действия является активной.

Локальная переменная является неопределенной (out of context), пока процедура, объявляющая ее не начинает выполняться. После выполнения процедуры переменная опять становится неопределенной.

Значения переменных, объявленных в модуле, удерживаются, пока выполняются процедуры в этом модуле.

Константы

В отличие от переменной значение константы никогда не изменяется.

Константы называют литеральными константами (literal constants), если их абсолютное значение записывается непосредственно в программный код.

В VB литеральные константы используются как аргументы для процедур и в математических или операциях сравнения: численные (числа и даты); строковые и логические константы.

Например, литеральная константа может записываться в операторе, как: 56,75 или "Обязательно", или True.

VB позволяет создавать, кроме литеральных, именованные константы (named constants). Такая константа, подобно переменной, имеет конкретное заданное ей имя, которое начинается со слова const. VB подставляет в то место оператора, где встречает именованную константу, ее конкретное значение.

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

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

Соседние файлы в папке Лекции по информатике