Static (Visual Basic)

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

Замечания

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

Правила

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

    Нельзя использовать Static внутри процедуры структуры.

  • Типы данных локальных Static переменных не могут быть выведены. Дополнительные сведения см. в разделе "Вывод локальных типов".

  • Объединенные модификаторы. Нельзя указать Static вместе с ReadOnly, Shadowsили Shared в том же объявлении.

Поведение

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

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

Пример

В следующем примере показано использование функции Static.

Function updateSales(ByVal thisSale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += thisSale
    Return totalSales
End Function

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

Модификатор Static можно использовать в этом контексте:

Оператор Dim

См. также