Перечисления

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

Перечисления представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора Enum, после которого указывается тип перечисления - он обязательно должен представлять целочисленный тип (Byte, Integer, Long, SByte, Short, UInteger, ULong или UShort). Если тип явным образом не указан, то умолчанию используется тип Integer. Затем идет список элементов перечисления:

Enum days
    monday
    tuesday
    wednesday
    thursday
    friday
    saturday
    sunday
End Enum
	
Enum time As Byte
    morning
    afternoon
    evening
    night
End Enum

В данном случае элементу перечисления присваивается целочисленное значение, причем первый элемент будет иметь значение 0, второй - 1 и так далее. Мы можем также явным образом указать значения элементов, либо указав значение первого элемента:

Enum operation As Integer
    add = 1	  'по умолчанию каждый следующий элемент увеличивается на единицу
    substract 'этот элемент равен 2
    multiplay 'этот элемент равен 3
    devide    'этот элемент равен 4
End Enum

Либо мы можем явным образом указать для всех них значения:

Enum operation As Integer
    add = 20
    substract = 3
    multiplay = 6
    devide = 100
End Enum

Перечисления могут объявляться только на уровне модуля или класса, но никак не в процедуре или функции. Чтобы использовать перечисление, мы можем создать переменную с типом данного перечисления и присвоить ей значение следующим образом:

Module Module2
	Enum days
        monday
        tuesday
        wednesday
        thursday
        friday
        saturday
        sunday
    End Enum
	Sub Main()
		'Переменная firstDay имеет тип firstDay и значение 0, так как элемент monday равен 0
        Dim firstDay As days = days.monday
        
    End Sub
End Module

Посмотрим на примере, как использовать перечисления:

Module Module1

    Enum Operation As Integer
        add = 1
        substract 'этот элемент равен 2
        multiplay 'этот элемент равен 3
        devide    'этот элемент равен 4
    End Enum

    Sub Main()
        'Тип операции задаем с помощью константы Operation.add, которая равна 1
        MathOp(10, 5, Operation.add)
        'Тип операции задаем с помощью константы Operation.multiplay, которая равна 3
        MathOp(10, 5, 3)
        Console.ReadLine()
    End Sub

    Sub MathOp(x As Integer, y As Integer, type As Operation)
        Dim result As Double
        Select Case type
            Case Operation.add
                result = x + y
            Case 2
                result = x - y
            Case Operation.multiplay
                result = x * y
            Case 4
                result = x / y
        End Select
        'Выводим результат операции
        Console.WriteLine("Результат операции равен {0}", result)
    End Sub
End Module

В данном случае у нас имеется перечисление Operation, которое представляет математические операции. Далее у нас объявлена процедура MathOp, которая в качестве параметров принимает два числа и типа операции. В основной процедуре Main мы два раза вызываем процедуру, передав в нее два числа - 5 и 10 и тип операции. Причем так как элементы перечисления представляют целые числа, то мы можем передать либо элемент перечисления, либо число, которое это константа представляет.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850