Cамоучитель по VB.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




Содержание раздела