Модификатор объявления переменной , указывающий видимость для всего модуля
Синтаксис
Описание
Shared делает переменные на уровне модуля видными внутри
Sub
и
Function.
Если
Shared не используется при декларации переменной уровня
модуля, то переменная видна только в коде на уровне модуля в этом файле
(Кроме того, переменная, объявленная с
Dim без модификатора
Shared,
и не внутри блока Namespace, хранится в стеке).
Примечание:
shared переменная может быть
инициализирована только с константным значением: ее стартовое значение
устанавливается в начале программы до того, как код выполняется, и поэтому
значение не может зависеть от каких-либо переменных или функций. Исключением
является
shared строковая переменная с переменной
длиной, которая вообще не может быть инициализирована, даже константной
строкой, из-за ее структуры с дескрипторами, указывающие на блок
динамической памяти.
Пример
'' Компилировать с опцией -lang qb или fblite
'$lang: "qb"
Declare Sub MySub
Dim Shared x As Integer
Dim y As Integer
x = 10
y = 5
MySub
Sub MySub
Print "x is "; x 'это
выведет 10, так как это shared
Print "y is "; y 'это
не выведет 5, потому что это не shared
End Sub
Отличия от QB
- Модификатор Shared внутри областей видимости --
функций, процедур, if/then, и циклов -- не поддерживается. Используйте Dim|Redim|Common|Static Shared
в основной программе. Или, если вы внутри блока видимости и Redim
переменная или массив ранее создан с Shared, просто
используйте Redim без Shared; это будет прекрасно
работать и ничего не испортит.
См. также