This article has been localized into Russian by the community.
Перечисления
Перечисления - это специальные наборы именованных значений, которые сопоставляются набору чисел, обычно целых чисел. Они пригодятся, когда вы хотите иметь возможность выбирать между набором постоянных значений, и с каждым возможным значением, относящимся к числу, они могут быть использованы в широком диапазоне ситуаций. Как вы увидите в нашем примере, перечисления определены для классов, внутри нашего пространства имен. Это означает, что мы можем использовать перечисления из всех классов в одном пространстве имен.
Это пример простого перечисления, чтобы показать их предназначение.
public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
Все эти возможные значения соответствуют цифрам. Если мы не зададим их специально, первое значение будет равно 0, следующее-1 и так далее. Следующий фрагмент кода докажет это, а также покажет, как мы используем одно из возможных значений из перечисления:
using System;
namespace ConsoleApplication1
{
public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
class Program
{
static void Main(string[] args)
{
Days day = Days.Monday;
Console.WriteLine((int)day);
Console.ReadLine();
}
}
}
На выходе будет ноль, потому что в понедельник карта величин сбивается до нуля. Очевидно, мы можем изменить это - изменить строку на что-то вроде этого:
public enum Days { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
Если вы снова запустите наш код, то увидите, что понедельник теперь равен 1 вместо 0. Все остальные значения будут на одно число выше, как результат. Другим значениям также можно назначить другие номера. Из-за прямого сопоставления с числом можно также использовать числа для получения соответствующего значения из перечисления, например:
Days day = (Days)5;
Console.WriteLine(day);
Console.ReadLine();
Еще одна интересная особенность перечислений является тот факт, что вы также можете использовать строковое представление значение. Измените приведенный выше пример на что-то вроде этого:
static void Main(string[] args)
{
string[] values = Enum.GetNames(typeof(Days));
foreach(string s in values)
Console.WriteLine(s);
Console.ReadLine();
}
Класс Enum содержит ряд полезных методов для работы с перечислениями.