Структуры

Последнее обновление: 30.10.2015

Кроме простых типов данных, типа 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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850