Оператор 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
См. также
Ссылки
Оператор Interface (Visual Basic)