Поделиться через


Общие члены в Visual Basic

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

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

Общие поля и свойства

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

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

В этом случае общие поля и свойства ведут себя как глобальные переменные, к которым можно получить доступ только из экземпляров класса или с помощью уточнения имени класса. Для достижения такого эффекта без общих полей и свойств потребовалось бы использование переменных уровня модуля. Однако переменные модульного уровня могут затруднить понимание и эксплуатацию классов. Более того, такое использование переменных модульного уровня нарушает концепцию инкапсуляции, представленную классами.

Общие процедуры

Общие процедуры являются методами класса, не связанными с определенным экземпляром класса. Например, метод Cos, определенный внутри класса Math, является общим методом. Можно вызвать общую процедуру как метод объекта или непосредственно из класса.

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

4hbsxy95.alert_note(ru-ru,VS.90).gifПримечание.

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

Пример. Общие члены

В следующем примере для демонстрации способа использования общих членов в программе создается 2 поля экземпляра, общее поле и общий метод:

Public Class Item
    Public Shared Count As Integer = 1
    Public Shared Sub ShareMethod()
        MsgBox("Current value of Count: " & Count)
    End Sub

    Public Sub New(ByVal Name As String)
        ' Use Count to initialize SerialNumber.
        Me.SerialNumber = Count
        Me.Name = Name
        ' Increment the shared variable
        Count += 1
    End Sub
    Public SerialNumber As Integer
    Public Name As String
    Public Sub InstanceMethod()
        MsgBox("Information in the first object: " & _
            Me.SerialNumber & vbTab & Me.Name)
    End Sub
End Class

Sub TestShared()
    ' Create two instances of the class.
    Dim part1 As New Item("keyboard")
    Dim part2 As New Item("monitor")

    part1.InstanceMethod()
    part2.InstanceMethod()
    Item.ShareMethod()
End Sub

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

После создания двух экземпляров, метод экземпляра InstanceMethod вызывается для обоих объектов, а также вызывается общий метод ShareMethod. В результате:

Information in the first object: 1 keyboard

Information in the second object: 2 monitor

Current value of the shared Count field: 3

См. также

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

Структуры и классы

Ссылки

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

Cos

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

Свойства, поля и методы классов

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