Shared
 
Модификатор объявления переменной , указывающий видимость для всего модуля

Синтаксис

Dim Shared ...
ReDim Shared ...
Common Shared ...
Static Shared ...

Описание

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; это будет прекрасно работать и ничего не испортит.

См. также