|
Программирование >> Программирование с использованием ajax
Обратите внимание, что здесь необходим еще один дополнительный шаг: нужно не просто объявлять переменную конкретного типа, а сначала объявлять и детализировать определяемый пользователем тип и только затем объявлять переменную этого типа. Определение перечислений Перечисления могут определяться с помощью ключевого слова 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, а не в том же месте, что и остальная часть кода. Объясняется это тем, что определения в принципе не выполняются, т.е. во время выполнения проход по коду в определении
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |