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


Оператор Structure

Объявляет имя структуры и представляет определения переменных, свойств, событий и процедур, которые объединены в структуру.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
    [ Implements interfacenames ]
    datamemberdeclarations
    [ methodmemberdeclarations ]
End Structure

Части

Термин

Определение

attributelist

Необязательный.См. Список атрибутов.

accessmodifier

Необязательный.Может принимать следующие значения:

Дополнительные сведения см. в разделе Уровни доступа в Visual Basic.

Shadows

Необязательный.См. раздел Shadows.

Partial

Необязательный.Показывает частичное определение структуры.Дополнительные сведения см. в разделе Partial (Visual Basic).

name

Обязательный.Имя данной структуры.См. раздел Имена объявленных типов (Visual Basic).

Of

Необязательный.Указывает на то, что это общая структура.

typelist

Является обязательным, если используется ключевое слово Of.Список параметров типа для данной структуры.См. раздел Список типов.

Implements

Необязательный.Указывает на то, что эта структура реализует члены одного или нескольких интерфейсов.Дополнительные сведения см. в разделе Оператор Implements.

interfacenames

Является обязательным, если используется оператор Implements.Имена интерфейсов, реализуемых структурой.

datamemberdeclarations

Обязательный.Один или несколько операторов Const, Dim, Enum или Event объявляют данные-члены структуры.

methodmemberdeclarations

Необязательный.Более одного объявления процедур Function, OperatorProperty или Sub, которые выступают в качестве членов-методов структуры.

End Structure

Обязательный.Завершает определение Structure.

Заметки

Инструкция Structure определяет тип составного типа значения, который можно настроить.Структура является обобщением определяемых пользователем типов (UDT), предыдущих версий Visual Basic.Дополнительные сведения см. в разделе Структуры (Visual Basic).

Структуры поддерживают работу со многими из тех элементов, с которыми работают классы.Например, структуры могут иметь свойства и процедуры, реализовывать интерфейсы и иметь параметризованные конструкторы.Однако в отношении наследования, объявлений и использования между структурами и классами существуют значительные различия.Также классы относятся к ссылочным типам, а структуры — к типам значений.Дополнительные сведения см. в разделе Структуры и классы (Visual Basic).

Structure можно использовать только на уровне пространства имен или модуля.Это означает, что контекст объявления для структуры должен быть исходным файлом, пространством имен, классом, структурой, модулем или интерфейсом, и не может быть процедурой или блоком.Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию (Visual Basic).

Структуры имеют по умолчанию доступ Friend (Visual Basic).Уровни доступа можно настроить с помощью модификаторов доступа.Дополнительные сведения см. в разделе Уровни доступа в Visual Basic.

Правила

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

  • Объявление члена. Необходимо объявить все элементы структуры.Член структуры не может быть Protected или Protected Friend, поскольку ничто не может наследовать от структуры.Структура, однако, может быть Protected или Protected Friend.

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

  • Инициализация. Инициализация значений неиспользуемых совместно данных-членов структуры не может быть частью их объявлений.Инициализация таких данных-членов должна выполняться на структуре с помощью параметризованного конструктора или путем присваивания значения члену после создания экземпляра структуры.

  • Наследование. Структура не может наследовать от типа, отличного от ValueType, от которого наследуют все структуры.В частности, одна структура не может наследовать от другой.

    Нельзя использовать Инструкция Inherits в определении структуры, даже для указания ValueType.

  • Реализация. Если структура использует Оператор Implements, необходимо реализовать каждый член, определенный каждым интерфейсом, заданным в interfacenames.

  • Атрибут по умолчанию. Структура может определять максимум одно свойство в качестве свойства по умолчанию с помощью модификатора Default (Visual Basic).Дополнительные сведения см. в разделе Default (Visual Basic).

Поведение

  • Уровень доступа. Внутри структуры можно объявить каждый член со своим собственным уровнем доступа.Все члены структуры по умолчанию имеют доступ Public (Visual Basic).Обратите внимание: если структура сама по себе имеет более ограниченный уровень доступа, это автоматически ограничивает доступ к ее членам, даже если отрегулировать их уровни доступа модификатором доступа.

  • Область действия. Область действия структуры — ее пространство имен, класс, структура или модуль.

    Областью действия каждого члена структуры является вся структура.

  • Время существования. Для самой структуры не определено время существования.Вместо этого каждый экземпляр данной структуры имеет время существования, независимое от всех других экземпляров.

    Время существования экземпляра начинается, когда он создается условием Оператор New (Visual Basic).Оно заканчивается, когда заканчивается время существования переменной, содержащей его.

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

    У членов структуры время существования зависит от того, как и где они были объявлены.Дополнительные сведения содержатся в разделе "Время жизни" в Оператор Class (Visual Basic).

  • Квалификация. Код вне структуры должен определять имя члена с именем этой структуры.

    Если код внутри вложенной структуры делает неопределенную ссылку на элемент программирования, Visual Basic ищет элемент сначала во вложенной структуре, затем в его содержащей структуре, и т.д., вплоть до внешнего содержащего элемента.Дополнительные сведения см. в разделе Ссылки на объявленные элементы (Visual Basic).

  • Потребление ресурсов памяти. Как и для всех составных типов данных, нельзя точно подсчитать общее потребление ресурсов памяти структуры простым сложением номинальных объемов памяти, занимаемых отдельными членами структуры.Более того, нельзя однозначно полагать, что порядок расположения элементов в памяти такой же, как и порядок их объявления.Если требуется контролировать расположение структуры в памяти, можно применить атрибут StructLayoutAttribute в операторе Structure.

Пример

В следующем примере оператор Structure применяется для определения набора связанных данных о сотруднике.Демонстрируется использование компонентов Public, Friend, и Private, позволяющих управлять доступом к элементам данных.Также показаны компоненты процедуры, свойств и событий.

Public Structure employee
    ' Public members, accessible from throughout declaration region.
    Public firstName As String
    Public middleName As String
    Public lastName As String
    ' Friend members, accessible from anywhere within the same assembly.
    Friend employeeNumber As Integer
    Friend workPhone As Long
    ' Private members, accessible only from within the structure itself.
    Private homePhone As Long
    Private level As Integer
    Private salary As Double
    Private bonus As Double
    ' Procedure member, which can access structure's private members.
    Friend Sub calculateBonus(ByVal rate As Single)
        bonus = salary * CDbl(rate)
    End Sub
    ' Property member to return employee's eligibility.
    Friend ReadOnly Property eligible() As Boolean
        Get
            Return level >= 25
        End Get
    End Property
    ' Event member, raised when business phone number has changed.
    Public Event changedWorkPhone(ByVal newPhone As Long)
End Structure

См. также

Ссылки

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

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

Оператор Module

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

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

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

Оператор Event

Оператор Operator

Оператор Property

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

Структуры и классы (Visual Basic)