Cамоучитель по VB.NET


Определение структур в программе


Определение структуры начинается с модификатора уровня доступа и ключевого слова Structure:

Public Structure NameOfStructure

' Код структуры End Structure

Для каждого члена структуры должен быть указан модификатор доступа (например, Public или Private). Поля, объявленные с ключевым словом Dim вне процедур и функций, считаются открытыми. Ниже приведен простейший вариант структуры для работы с комплексными числами:

Public Structure ComplexNumber

Private m_real As Double

Private m_complex As Double

Public Property real () As Double Get

Return m_real

End Get Set(ByVal Value As Double)

m_real = Value

End Set

End Property

Public Property complex()As Double Get

Return m_complex End Get Set(ByVal Value As Double)

m_complex = Value

End Set

End Property

Public Sub New(ByVal x As Double. ByVal у As Double)

real = x complex = у

End Sub

Public Function Add(ByVal zl As ComplexNumber) As ComplexNumber

Dim z As ComplexNumber

z.real = Me.real + zl.real

Z.complex = Me.complex + zl.complex

Return z End Function

' И т.д. End Structure

Обратите внимание на возвращение структуры функцией Add. Кстати, поля структур не могут инициализироваться при объявлении:

Private m_real As Double = 0 ' Ошибка

Между структурами и ссылочными объектами существует еще одно принципиальное различие: использование открытых полей вместо свойств Get-Set в структурах широко распространено и не считается проявлением плохого стиля программирования, как для объектов. Это связано с тем, что поля экземпляров обычно относятся к базовым типам. Например, переопределение приведенной выше структуры ComplexNumber с открытыми полями Real и Imaginary не вызовет особых проблем.

Структуры создаются вызовом New или при присваивании значений их полям. Обращения к полям структур осуществляются так же, как и обращения к свойствам объектов. Ниже приведен пример использования структуры Compl exNumber:

Sub Main()

Dim Z1 As New ComplexNumber(2.3. 2.4)

Dim Z2.Z3 As ComplexNumber

Z2.real = 1.3

Z2.complex =1.4

Z3 = Zl.Add(Z2)

Console. WriteLine(Z3. real)

Console.ReadLine()

End Sub

Текущая версия VB .NET не позволяет переопределять смысл операторов (то есть про-изводить перегрузку операторов), поэтому нам пришлось определить метод Add вместо того, чтобы задать новое определение для оператора «+». Возможность перегрузки операторов должна появиться в будущих версиях VB .NET. Если вы хотите, чтобы в сегодняшней версии вашего пакета для работы с комплексными числами сложение выполнялось знаком «+», придется использовать С#.

Структуры могут содержать любые объекты VB .NET, в том числе другие структуры, перечисляемые типы, массивы и т. д. Таким образом, на VB .NET можно написать пакет для работы с матрицами, в котором основная структура данных будет определяться следующим образом:

Public Structure Matrix

Private TheOata(,) As Double

' И т.д. End Structure









Начало  Назад  Вперед