Структуры. Определение структур в программе.
Обратите внимание на возвращение структуры функцией 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