Кроме простых типов данных, типа Integer, в языке VB.NET имеются и составные, которые называются структурами. Они могут, как и модули, содержать другие переменные различных типов, а также методы. Объявление структуры начинается со ключевого слова Structure. Создадим структуру Book, которая будет хранить переменные для названия, автора и года издания книги и процедуру для вывода на консоль информации о книге:
Structure Book
'Название книги
Dim name As String
'Автор
Dim author As String
'Год издания
Dim year As Integer
'Метод для вывода информации о книге
Sub Information()
Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year)
End Sub
End Structure
Теперь используем эту структуру в программе:
Module Module2
Structure Book
'Название книги
Dim name As String
'Автор
Dim author As String
'Год издания
Dim year As Integer
'Метод для вывода информации о книге
Sub Information()
Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year)
End Sub
End Structure
Sub Main()
Dim book1 As Book
book1.name = "Война и мир"
book1.author = "Л. Н. Толстой"
book1.year = 1869
'Выведем информацию о книге book1 на экран
book1.Information()
Console.ReadLine()
End Sub
End Module
Обратите внимание, что структуру можно задать только на уровне модуля или класса, но никак не в методе. При чем структура Book является не просто набором переменных, но и новым типом данных. Мы можем использовать массив структур:
Dim books(2) As Book
books(0).name = "Война и мир"
books(0).author = "Л. Н. Толстой"
books(0).year = 1869
books(1).name = "Преступление и наказание"
books(1).author = "Ф. М. Достоевский"
books(1).year = 1866
books(2).name = "Отцы и дети"
books(2).author = "И. С. Тургенев"
books(2).year = 1862
'Сортировка массива книг по году издания
Dim temp As Book
For i As Integer = 0 To books.Length - 1
For j As Integer = i + 1 To books.Length - 1
If books(i).year > books(j).year Then
temp = books(i)
books(i) = books(j)
books(j) = temp
End If
Next
Next
For Each b As Book In books
b.Information()
Next