Кроме простых типов данных, типа 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