|
Прошел курс. Получил код 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.
Перечисления разной разрядности

