Static (Visual Basic)

Обновлен: Ноябрь 2007

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

Заметки

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

Правила

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

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

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

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

Поведение

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

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

Пример

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

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

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

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

Оператор Dim (Visual Basic)

См. также

Основные понятия

Время существования в Visual Basic

Объявление переменной в Visual Basic

Вывод локального типа

Ссылки

Shadows

Shared (Visual Basic)

Другие ресурсы

Структуры: пользовательские типы данных

Общее представление о классах