Вот несколько моментов, на которые
Вот несколько моментов, на которые следует обратить внимание при объявлении перечислений:
- как и другие классы, перечисления могут быть объявлены непосредственно в пространстве имен проекта или могут быть вложены в описание класса. Последний вариант часто применяется, когда перечисление используется в одном классе и имеет атрибут доступа private;
- константы разных перечислений могут совпадать, как в перечислениях MyColors и TwoColors. Имя константы всегда уточняется именем перечисления;
- константы могут задаваться словами русского языка, как в перечислении Rainbow;
- разрешается задавать базовый класс перечисления. Для перечисления Days базовым классом задан класс long;
- разрешается задавать не только базовый класс, но и указывать начальный элемент подмножества, на которое проецируется множество значений перечисления. Для перечисления Sex в качестве базового класса выбран класс byte, а подмножество значений начинается с 1, так что хранимым значением константы man является 1, а woman - 2.
Рассмотрим теперь пример работы с объектами - экземплярами различных перечислений:
public void TestEnum() { //MyColors color1 = new MyColors(MyColors.blue); MyColors color1= MyColors.white; TwoColors color2; color2 = TwoColors.white; //if(color1 != color2) color2 = color1; if(color1.ToString() != color2.ToString()) Console.WriteLine ("Цвета разные: {0}, {1}", color1, color2); else Console.WriteLine("Цвета одинаковые: {0}, {1}",color1, color2); Rainbow color3; color3 = (Rainbow)3; if (color3 != Rainbow.красный)color3 =Rainbow.красный; int num = (int)color3; Sex who = Sex.man; Days first_work_day = (Days)(long)1; Console.WriteLine ("color1={0}, color2={1}, color3={2}",color1, color2, color3); Console.WriteLine ("who={0}, first_work_day={1}", who,first_work_day); }
Данный пример иллюстрирует следующие особенности работы с объектами перечислений:
- объекты перечислений нельзя создавать в объектном стиле с использованием операции new, поскольку перечисления не имеют конструкторов;
- объекты можно объявлять с явной инициализацией, как color1, или с отложенной инициализацией, как color2. При объявлении без явной инициализации объект получает значение первой константы перечисления, так что color2 в момент объявления получает значение black;
- объекту можно присвоить значение, которое задается константой перечисления, уточненной именем перечисления, как для color1 и color2. Можно также задать значение базового типа, приведенное к типу перечисления, как для color3;
- нельзя сравнивать объекты разных перечислений, например color1 и color2, но можно сравнивать строки, возвращаемые методом ToString, например color1.ToSting() и color2.ToString();
- существуют явные взаимно обратные преобразования констант базового типа и констант перечисления;
- Метод ToString, наследованный от класса Object, возвращает строку, задающую константу перечисления.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий