Иллюстрированный самоучитель по Visual Basic .NET

Перечисляемые типы

Перечисляемые типы обычно используются для определения набора именованных целочисленных констант. При определении перечисляемого типа используется пара ключевых слов Enum-End Enum вместе с модификатором доступа. Перечисляемый тип может содержать только целочисленные типы вроде Integer или Long (тип Char недопустим). Например, в следующем фрагменте определяется открытый перечисляемый тип с именем BonusStructure:

Public Enum BonusStructure
None = 0
FirstLevel = 1
SecondLevel = 2
End Enum

После этого в любом месте программы можно объявить переменную типа BonusStructure:

Dim bonusLevel As BonusStructure

При работе с перечисляемыми типами, как и с другими структурными типами, ключевое слово New не используется.

Примечание
Если в перечисляемом типе указаны только имена без числовых значений, .NET начинает отсчет с 0 и увеличивает значение на 1 для каждой новой константы. Если задано только первое число, то каждое следующее значение вычисляется увеличением предыдущего на 1
.

Определив в проекте перечисляемый тип, вы можете использовать конструкции вида:

Bonus =Tom.Sales * bonusLevel.SecondLevel

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

Public Function Calcu1ateBonus(ByVal theSales As Decimal) As Decimal
Return theSales * BonusStructure.SecondLevel
End Function

Одним из традиционных недостатков перечисляемых типов было отсутствие удобных средств для получения имени по значению, что затрудняло отладку программ. В классе Enum, базовом для всех перечисляемых типов, определены очень полезные методы для получения подобной информации. Например, следующая команда возвращает строку FirstLevel:

BonusStructure.GetName(bonusLevel.GetType.l)

Данный фрагмент выводит все имена, входящие в перечисляемый тип:

Dim enumNames As String().s As String
enumNames = BonusStructure.GetNames(bonusLevel.GetType)
For Eachs In enumNames
System.Console.WriteLine(s) Next
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.