Перечисления представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора 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 и тип операции. Причем так как элементы перечисления представляют целые числа, то мы можем передать либо элемент перечисления,
либо число, которое это константа представляет.