* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Константы и перечисления
7 февраля 2009
Зачастую некоторые значения встречаются в коде приложения многократно. Кон- станты позволяют присваивать таким значениям дружественные имена и приме- нять их в коде для ссылки на эти значения. Перечисление — это определяемый пользователем набор целочисленных констант с дружественными именами. При- менение констант и перечислений делает код более понятным, простым в отладке и устойчивым к ошибкам, вызванным опечатками.
Применение констант Как уже говорилось, константы позволяют использовать дружественные имена для ссылок на часто встречающиеся в коде значения. Их объявляют при помощи клю- чевого слова Const (const), например: Visual Basic .NET Public Const Pi as Dojble = 3.14159265 Visual C# public const double Pi = 3.14159265: Константами могут быть любые внутренние или перечислимые типы, но не пользовательские типы и массивы. По определению, константы — это неизменяе- мые значения, которые нельзя модифицировать или переопределить после того, как они были установлены. Определив константу, можно использовать ее в коде вместо значения, которое она представляет. Вот пример константы: Visual Basic .NET Public Const Pi as Double = 3.14159265 Public Function CalculateCircleAreafByVal г as Double) as Double Return Pi * г Л 2 End Function Visual C# public const double Pi = 3.14159265; public double CalculateCircleArea(double r) { // В Си л - это двоичный оператор, а не оператор возведения в степень. return Pi * г * г; } Подобно переменным, у констант бывают разные уровни доступа. Если констан- та должна быть доступной всем пользователям приложения или компонента, сле- дует объявить ее с ключевым словом Public (public), как в предыдущем примере. Константы, предназначенные исключительно для внутреннего употребления, не- обходимо объявлять с модификатором Private (private). Константы, объявленные с ключевым словом Friend (internal), доступны в пределах сборки, а те, которые опре- делены с ключевым словом Protected (protected), — всем типам, производным от типа, в котором она объявлена. Применение перечислений Перечисления позволяют работать с наборами логически связанных констант, на- значая им имена, которые легко запомнить. Например, перечисление (см. пример кода ниже), объявленное на основе констант, представляющих дни недели, позво- лит заменить в коде номера дней недели их названиями, Visual Basic .NET Public Enum DaysOfWeek Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 Sunday = 7 End Enum Visual C# public enum DaysOfWeek I Monday - 1, Tuesday = 2, Wednesday - 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday - 7 } По умолчанию перечисления объявляются с типом Integer (int), но у них может быть и любой другой целочисленный тип (в Visual Basic .NET это Byte, Short, Integer или Long, а в Visual C# — byte, short, int или long). Чтобы создать перечисление с типом, отличным от типа по умолчанию, укажите нужный тип в объявлении пере- числения: Visual Basic .NET Public Enum DaysOfWeek As Byte Остальной код опущен Visual C# public enum DaysOfWeek : byte Остальной код опущен He обязательно указывать значения членов перечисления явно. Если значения членов перечисления не заданы, по умолчанию им присваиваются последователь- ные значения, начиная с нуля: Visual Basic .NET Public Enum Numbers zero ' имеет значение "О" one ' имеет значение "1" two ' имеет значение "2" End Enum Visual C# public enum Numbers { zero, // имеет значение "О" one, // имеет значение "1" two // имеет значение "2" } Определив члены перечисления, можно применять их в коде. В Visual Basic .NET члены перечисления автоматически преобразуются в значения, которые они пред- ставляют. Таким образом, их допустимо использовать как константы: Visual Basic .NET Этот пример использует перечисление Numbers из предыдущего примера. MessageBox.Show((Numbers.two * 2).ToString()) ' Эта команда выводит сообщение "4". Однако для использования значений членов перечисления в Visual C# необхо- димо явно приводить их к соответствующему целочисленному типу, например: Visual C# // Этот пример использует перечисление Numbers из предыдущего примера, MessageBox.Show(((int)Nufnbers. two * 2).ToString()); // Эта команда выводит // сообщение "4" . Поскольку перечисления — это пользовательские типы, разрешается создавать методы, требующие в качестве параметров члены перечисления вместо числовых значений. Замена числовых параметров членами перечислений уменьшает вероят- ность ошибок, связанных с опечатками. Следующий пример демонстрирует приме- нение созданного ранее перечисления DaysOfWeek в качестве параметра для метода: Visual Basic .NET Public Sub ScheduleDayOff(ByVal day as DaysOfWeek) Select Case day Case DaysOfWeek. Monday Реализация опущена Case DaysOfWeek. Tuesday Реализация опущена Остальные операторы Case опущены End Case End Sub Visual C# public void ScheduleDayOff (DaysOfWeek day) { switch(day) { case DaysOfWeek. Monday: // Реализация опущена break; case DaysOfWeek. Tuesday: // Реализация опущена break; // Прочие варианты опущены