Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Типы данных C#
Перечисления (перечни)
Перечисления ( enumerations ) относятся к значимому типу данных. Они представляют собой набор именованных целочисленных констант, по умолчанию заданных типом Int32. Синтаксис объявления перечисления следующий:
модификатор_доступа enum имя_типа{список_членов}
Список членов представляет собой список идентификаторов, разделенных запятыми. Модификатор доступа по умолчанию является internal - в пределах сборки. Для использования во внешней сборке нужно объявлять public (как и классы).
using System; namespace Test { // Значимый тип, данные размещаются в стеке enum Fruit // Фрукты { Apples, // Яблоки Plums, // Сливы Cherries, // Вишни Grapes, // Виноград Pears // Груши } // Класс с функцией Main не может иметь экземпляр // Поэтому все функции в этом классе должны быть статическими class EntryPoint { static void Main() { // Настройка консоли Console.Title = "Использование перечислений"; Console.ForegroundColor = ConsoleColor.White; Console.CursorVisible = false; string[] colorFruit = { // Массив цветов "Красный", "Синий", "Вишневый", "Зеленый", "Черный" }; string[] nameFruit = { // Массив имен "Яблоки", "Сливы", "Вишни", "Виноград", "Груши" }; // Объявляем переменную перечислимого типа Fruit fruit; // Используем переменную перечисления для обхода всех членов for (fruit = Fruit.Apples; fruit <= Fruit.Pears; fruit++) Console.WriteLine(fruit + " имеет значение " + (int)fruit); // Используем переменную перечисления для индексации массива Console.WriteLine();// Прогон строки for (fruit = Fruit.Apples; fruit <= Fruit.Pears; fruit++) Console.WriteLine("Цвет фрукта " + fruit + " (" + nameFruit[(int)fruit] + ") - " + colorFruit[(int)fruit]); Console.ReadLine();// Для задержки окна } } }Листинг 4.8. Применение типа перечислений
Значения списка перечислений по умолчанию начинаются с нуля. Но любому члену списка можно явно присвоить значение, тогда для всех последующих членов списка начнется новая точка отсчета значений натурального ряда чисел.
enum Fruit // Фрукты { Apples, // = 0 Plums, // = 1 Cherries = 100, Grapes, // = 101 Pears // = 102 }
Элементы перечисления можно инициализировать в любой последовательности, закрепляя за именованными константами нужные целочисленные значения. Причем, некоторые элементы списка могут иметь одинаковые значения, главное, чтобы имена членов списка были уникальными в рамках одного перечисления.
enum Fruit // Фрукты { Apples = 21, Plums = 101, Cherries = 100, Grapes = 12, //Grapes = 3, Pears = 12 }
Управление объемом памяти элементов перечисления
Элементы перечисления, как значимого типа, загружаются в стек потока, и каждый по умолчанию имеет тип Int3 2 и занимает 4 байта. Ситуацию можно изменить, задав другой целочисленный тип (например, byte ) для всех элементов перечисления по следующему синтаксису
enum Fruit : byte // Фрукты { Apples = 21, Plums = 101, Cherries = 100, Grapes = 12, Pears = 2 }
using System; namespace Test { enum Fruit // Фрукты { Apples, Plums, Cherries, Grapes, Pears } enum Fruit1 : byte // Фрукты { Apples, Plums, Cherries, Grapes, Pears } enum Fruit2 : long // Фрукты { Apples, Plums, Cherries, Grapes, Pears } class EntryPoint { static void Main() { // Настройка консоли Console.Title = "Использование перечислений"; Console.ForegroundColor = ConsoleColor.White; Console.CursorVisible = false; Console.WriteLine("Члены Fruit имеют размер по " + sizeof(Fruit) + " байта"); Console.WriteLine("Члены Fruit1 имеют размер по " + sizeof(Fruit1) + " байту"); Console.WriteLine("Члены Fruit2 имеют размер по " + sizeof(Fruit2) + " байт"); Console.ReadLine();// Для задержки окна } } }Листинг 4.9. Перечисления разной разрядности