Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 120

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 114 115 116 117 118 119 < 120 > 121 122 123 124 125 126 .. 404 >> Следующая


Card.isAceHigh * true;

Console.WrlteLinef'Aces are high.'); Card.ueeTrumpa * true;

Card.trump ¦ Suit.Club;

Console.Writ*Lin*(’Clubs are Егшпрв.*))

Card cardi, card2, card3, cardi, cardst cardi = new Card(Suit,Club, Rank.Five); card2 = new Card(Suit,Club, Rank,Five);

// тузы имеет наивысшее старшинство. //

// Козырь — трефы, //

И пятерка треф // i / пятерка треф /1
Дополнительные с ведения о классах

253

card3 » new Card (Suit .Club, Hank. Ace) ; cardi * new Card (Suit. Heart, Hank.Ten); cardS * new Card(Suit.Diamond, Rank.Ace);

// туз треф //

// цесятка червей // // туз бубен //

card2);

card3);

Consolе.Wri teLine(¦{0) cardl.ToString().

Console.WriteLine(¦{0} cardl.ToString[). Coneo le. Hr i teLi ne (¦ {0)

Card.Equa1a(card3, card4));

cardl > card2);

Console.WriteLine('CQ) ¦= (1) ? C2)*,

cardl.ToString(), cardj.ToString(), cardl Console.WriteLineC*CO) )=¦ (1) ? (2Jr,

cardl.TpStringd , card3.ToString(), cardl Console.WriteLine('(0) .Equals<{1}> 7 (2)', ;

cardl.ToString(J, card*.ToString(), cardl.Equals(card*)Ij Console.WriteLineCCard.Equals((0), [1]) ? (2)', card3.ToString(), card*.ToSt ring(),

> 11) 7 (2)¦, card2.ToString (J,

Console.WriteLineC'CQ) <» (1) 7 (3)',

cardl.ToStringO , card3.ToString(), cardl <= card3)i

> (1) 7 (2)*, card*.ToString(), cardl > card*);

> Cl) T (2)*, '

card*.ToString(), cardl.ToStringj), card* > cardl);

Console.WriteLineC(O) > (1) 7 12}’,

cards.ToString(), card*.ToString(), cards > card*); Console.WriteLinet'CO) > (1) 7 {2}*,

card*.ToString(), card?.ToString(), cardi > card5);

Будут получены следующие результаты:

i’-ijC:\BegCSharp\Chapter 11 \Ch J1 CardClitnt'\bm\Debuq\rh 111 ardOtfcnt.

Йсез ai*f: high.

CIuTjjj лив trunks.

The Flue of Clubs Tti& Пии of Clubs ? Evue

'I'lic Fiufi of Cljubs *п Г'Ье ftcc of Clubs ? Tv'jp

Tin' 1:1че of Cluhc . Ecjun] s \T !'.e Ten of Heai‘tn> ? ¦' Ll:

C^rd.Equ4ls<Thc Иск of Cl(ib, Тда Геп of > ? F • .

Tha Flue ot Club3 > Г la Fiue of Clubn ? False

fjip Five of Club; <= Hit.- flue of Clttbti 7 Trinf

ГЬо Fiue of Clubs > Hie Ten of Hearts ? True

Tin: Tun of lfe^tLts > Tin? Fi>je of Clubs V Ь'л1;,'к

TIio f:ci; of DidH'iQfid'i > The Ter of Hearts ? Tirui;

The Ten of tlis Псе of JHiinumd* ? True

Frees .m;j key to continue

_jDl xj

UL

J

В каждом случае используемые операторы учитывают установленные нами правила. Это очень хорошо видно по последним четырем строкам вывода, в которых демонстрируется, что козырная карта всегда бьет некозырную.

Более сложные преобразования типов

Теперь, когда вы знаете, каким образом описываются операторы преобразования типов, настала пора увенчать ваше знакомство с этой темой рассмотрением некоторых дополнительных возможностей языка С#. В этом разделе мы будем изучать:

Q Упаковку н распаковку — преобразования между ссылочными н значимыми типами, .
254 Глава 11

? Оператор is, который используется для проверки того, является ли конкретная переменная переменной данного типа нлн совместимой с данным типом.

? Оператор аа, который используется для преобразования переменной

в указанный тип несколько иным способом, нежели при изменении типа.

Упаковка и распаковка

В главе 8 мы обсуждали отличия между ссылочными и значимыми типами, что было проиллюстрировано в главе 9 путем сравнения структур (которые представляют собой значимый тип) и классов (которые относятся к ссылочным типам). Упаковка — это процедура преобразования значимого типа в тип System.object либо в тип интерфейса, который реализован значимым типом. Распаковка является обратной процедурой.

Предположим, что имеется структура следующего типа:

struct' MyStruct ' ' -

(

public int Vali .

Мы можем выполнить упаковку этой структуры, поместив ее в переменную типа object:

MyStruct val'/pel ¦ пей MyStruct ()j

valiypel.Val * 5;

object refTVp* * valTypelj

Здесь мы создаем новую переменную (vaiTypei) типа MyStruct, присваиваем ей значение, а затем осуществляем ее упаковку в переменную типа object (refType).

В этом объекте, созданном в результате упаковки переменной, содержится ссылка на копию переменной значимого типа, а не ссылка на исходную переменную значимого типа. Это можно проверить, изменив содержимое исходной структуры, выполнив распаковку структуры, которая содержится в переменной типа object, и сравнив их значения:

valTypel.Val =¦ б;

MyStruct valType2 * (MyStruct) refType;

Console.WriteLineI'valTypea.Val ¦» 10)*, vallypeJ,Val>i

В результате выполнения этого кода будет получен следующий результат: valType2.Val = 5

В том случае, когда объекту присваивается переменная ссылочного типа, то все происходит совсем иначе. Это можно проиллюстрировать, описав MyStruct как класс (проигнорировав тот факт, что имя этой переменной оказывается несколько неподходящим для класса):

class MyStruct

public int val;

>

Запустив приведенный выше клиентский код без каких бы то ни было изменений (по-прежнему игнорируя некорректно названные переменные), мы получим следующий выходной поток:
Предыдущая << 1 .. 114 115 116 117 118 119 < 120 > 121 122 123 124 125 126 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.