Console.WriteLine ("pt2=pt1: " + pt2); pt1.X +=10; Console.WriteLine ("pt1.X =pt1.X +10: " + pt1); Console.WriteLine ("pt2: " + pt2); Console.WriteLine("Классы: присваивание ссылочного типа!"); CPoint cpt1 = new CPoint(3,5), cpt2; cpt2 = cpt1; Console.WriteLine ("cpt1: " + cpt1); Console.WriteLine ("cpt2=cpt1: " + cpt2); cpt1.X +=10; Console.WriteLine ("cpt1.X =cpt1.X +10: " + cpt1); Console.WriteLine ("cpt2: " + cpt2); } Результаты вычислений показаны на рис. 17.2.
Рис. 17.2. Две семантики присваивания Действия над объектами Point и CPoint выполняются аналогичные а результаты получаются разные: в конце вычислений pt1 и pt2 различны, а cpt1 и cpt2 совпадают. Перечисление - это частный случай класса, класс, заданный без собственных методов. Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. Поскольку у перечислений нет собственных методов, то синтаксис объявления этого класса упрощается - остается обычный заголовок и тело класса, содержащее список возможных значений. Вот формальное определение синтаксиса перечислений: [атрибуты][модификаторы]enum имя_перечисления[:базовый класс] {список_возможных_значений} Описание атрибутов отложим на последующие лекции. Модификаторами могут быть четыре известных модификатора доступа и модификатор new. Ключевое слов enum говорит, что определяется частный случай класса - перечисление. Список возможных значений задает те значения, которые могут получать объекты этого класса. Возможные значения должны быть идентификаторами; но допускаются в их написании и буквы русского алфавита. Можно указать также базовый для перечисления класс. Дело в том, что значения, заданные списком, проецируются на плотное подмножество базового класса. Реально значения объектов перечисления в памяти задаются значениями базового класса, так же, как значения класса bool реально представлены в памяти нулем и единицей, а не константами true и false, удобными для их использования программистами в тексте программ. По умолчанию, базовым классом является класс |