Программирование >>  Программирование с использованием ajax 

1 ... 32 33 34 [ 35 ] 36 37 38 ... 396


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

Определение перечислений

Перечисления могут определяться с помощью ключевого слова enum следующим образом:

enum имя типа

значение!, значение2, значениеЗ,

значением

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

имя типа имя переменной;

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

имя переменной = имя типа. значение;

У перечислений имеется базовый тип, используемый для хранения. Каждое из значений, которое может принимать тип перечисления, сохраняется в виде значения именно этого базового типа, каковым по умолчанию является int. Указать другой базовый тип можно, добавив желаемый тип в объявление перечисления:

епглп имя типа: базовый тип

значение!, значение2, значениеЗ,

значениеЫ

В общем, для перечислений в качестве базовых могут использоваться типы byte, sbyte, short, ushort, int, uint, long и ulong.

По умолчанию каждому значению автоматически присваивается значение соответствующего базового типа в соответствии с порядком, в котором оно определяется, начиная с нуля. Это означает, что значение! получает О, значение2- 1, значениеЗ-2 и т.д. Операции присваивания таких значений можно переопределять путем использования операции = и указания фактических желаемых значений для каждого значения перечисления:

enum имя типа: базовый тип {

значение! = фактическое значение1, значение2 = фактическое значение2, значениеЗ = фактическое значениеЗ,

значениеЫ = фактическое значениеЫ,



jicnwecKoe занятие Использование перечисления

1. Создайте новое консольное приложение по имени Ch05Ex02 и сохраните его в каталоге С:\BegVCSharp\Chapter05.

2. Добавьте в файл Program, cs следующий код:

namespace Ch05Ex02 {

епглп orientation : byte {

north = 1,

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

enum имя типа: базовый тип {

значение! = фактическое значение1, значение2 = значение!,

значениеЗ,

значениеЫ = фактическое значениеЫ,

Любым значениям, которым ничего явно не было присвоено, автоматически назначается базовое значение, вследствие чего они получают значение, на 1 большее, чем у предыдущего объявленного явным образом. В приведенном выше коде, например, значениеЗ автоматически получит значение на 1 большее, чем значение!.

Обратите внимание, что это может приводить к появлению проблем в случае указания после определения вроде значение2 = значение! значений, идентичных другим. Например, в следующем коде значение4 получит точно такое же значение, что и значения2:

enum имя типа: базовый тип {

значение! = фактическое значение!, значение2,

значениеЗ = значение!, значение4,

значениеЫ = фактическое значениеЫ,

Конечно, если такое поведение является именно тем, что нужно, тогда этот код вполне пригоден для использования. Еще обратите внимание, что присваивание значений по кругу будет приводить к появлению ошибки:

enum имя типа: базовый тип {

значение! = значение2, значение2 = значение!

В следующем практическом занятии предлагается пример, иллюстрирующий все описанное выше. В частности, в нем сначала определяется перечисление по имени orientation, а затем демонстрируются различные способы его применения.



south = 2, east = 3, west = 4

class Program {

static void Main(string[] args) {

orientation myDirection = orientation. north ; Console.WriteLineCmyDirection = {0} , myDirection); Console.ReadKey();

3. Запустите приложение. На рис. 5.6 показан вывод, который должен получиться.


Рис. 5.6. Приложение Ch05Ex02 в действии

4. Выйдите из приложения и измените его код следующим образом:

byte directionByte;

s tring directions tring;

orientation myDirection = orientation.north;

Console.WriteLine( myDirection = (0} , myDirection);

directionByte = (byte)myDirection;

directionString = Convert.ToString(myDirection);

Console.WriteLine( byte equivalent = {0} , directionByte);

байтовый эквивалент Console.WriteLine ( string equivalent = {0) , directionString) ;

строковый эквивалент

Console.ReadKeyО;

5. Запустите приложение снова. Теперь вывод должен получиться таким, как показано на рис. 5.7.

Рис. 5.7. Вывод модифицированного приложения Ch05Ex02

Описание полученных результатов

Приведенный код демонстрирует определение и применение типа перечисления по имени orientation. Первым, на что нужно обратить внимание, является то, что код определения типа размещается в отдельном пространстве имен Ch05Ex02, а не в том же месте, что и остальная часть кода. Объясняется это тем, что определения в принципе не выполняются, т.е. во время выполнения проход по коду в определении



1 ... 32 33 34 [ 35 ] 36 37 38 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика