14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

им<strong>е</strong>на лучш<strong>е</strong> цифр<br />

Присвоим числам им<strong>е</strong>на<br />

Иногда удобн<strong>е</strong><strong>е</strong> работать с им<strong>е</strong>нованными числами - сопоставить их эл<strong>е</strong>м<strong>е</strong>нтам п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния и обращаться<br />

к ним по им<strong>е</strong>нам. Это позволит изб<strong>е</strong>жать н<strong>е</strong>понятных цифр, разбросанных по вс<strong>е</strong>му коду. Вот<br />

п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ни<strong>е</strong> для оц<strong>е</strong>нки кач<strong>е</strong>ства выполн<strong>е</strong>ния собаками различных команд:<br />

Порядок сл<strong>е</strong>дования<br />

н<strong>е</strong> и м <strong>е</strong>­<br />

<strong>е</strong>т знач<strong>е</strong>ния.<br />

Кром<strong>е</strong> того,<br />

одно и то ж<strong>е</strong><br />

число можно<br />

сопоставит ь<br />

разным им<strong>е</strong><br />

намpublic<br />

enum TrickScore {<br />

^ S i t = 7,<br />

Beg = 2 5 ,<br />

Rollover = 50,<br />

Fetch = 10,<br />

ComeHere = 5,<br />

- \<br />

Speak = 30,<br />

}<br />

Вот фрагм<strong>е</strong>нт м<strong>е</strong>тода, использующ<strong>е</strong>го п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ни<strong>е</strong><br />

T ric k S c o re пут<strong>е</strong>м прив<strong>е</strong>д<strong>е</strong>ния к знач<strong>е</strong>нию<br />

типа i n t и обратно:<br />

П о у м о л ч а н и ю б а з о в ы м<br />

д л я э л <strong>е</strong> м <strong>е</strong> н т о в п <strong>е</strong> р <strong>е</strong> ч и с ­<br />

л <strong>е</strong> н и я я в л я <strong>е</strong> т с я ти п int.<br />

Укажит<strong>е</strong> зат<strong>е</strong>м . \<br />

^ ЗйИА<strong>е</strong>Л1 число<br />

объявить и п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ни<strong>е</strong><br />

от врт г^^а^'^° со - ' т ипа, наприм<strong>е</strong>р hyte или<br />

‘^о <strong>е</strong>т ст ву<strong>е</strong>т .<br />

как это сд<strong>е</strong>лано 6 нижн<strong>е</strong>й<br />

части страницы.<br />

Такая запись за с тавля<strong>е</strong>т к о м ­<br />

пилят ор использовать число,<br />

кот орому соот в<strong>е</strong>т ст ву<strong>е</strong>т<br />

эл<strong>е</strong>м <strong>е</strong>нт п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния. 8 данном<br />

случа<strong>е</strong> ХО.<br />

int value = (jint^rickScore.Fetch * 3;<br />

MessageBox.Show(value.ToStringO);<br />

TrickScore score = (TrickScore)value; ^<br />

MessageBox.Show(score.ToStringO);<br />

Этот оп<strong>е</strong>ратор присваива<strong>е</strong>т<br />

п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной<br />

value знач<strong>е</strong>ни<strong>е</strong> ъо.<br />

Числ<strong>е</strong>нно<strong>е</strong> знач<strong>е</strong>ни<strong>е</strong> Мо<br />

ж <strong>е</strong> т быть пр<strong>е</strong>образовано<br />

обратно в эл<strong>е</strong>м<strong>е</strong>нт<br />

п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния. Так как<br />

value = З Л score п р и -<br />

сваиава<strong>е</strong>тся знач<strong>е</strong>ни<strong>е</strong><br />

T r i c k S c o r e . f e t c K С о -<br />

^...йг-иллтб<strong>е</strong>нно м<strong>е</strong>той<br />

а<br />

отб <strong>е</strong>тстб<strong>е</strong>н н о м<strong>е</strong>тис,<br />

с^л<strong>е</strong>м<strong>е</strong>нты п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния можно использовать как числа и производить с ними ^core.ToStringO возвра<br />

разнообразны<strong>е</strong> вычисл<strong>е</strong>ния, а можно воспользоваться м<strong>е</strong>тодом T o S trin g O и^а<strong>е</strong>т знач<strong>е</strong>ни<strong>е</strong> Fetch,<br />

и рассматривать их как строки. При отсутствии явного присво<strong>е</strong>ния, эл<strong>е</strong>м<strong>е</strong>нты<br />

п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния получают знач<strong>е</strong>ния по умолчанию. П<strong>е</strong>рвому эл<strong>е</strong>м<strong>е</strong>нту присваива<strong>е</strong>тся<br />

О, второму —1 и т. д.<br />

342 глава 8<br />

А что д<strong>е</strong>лать, <strong>е</strong>сли нужно присвоить эл<strong>е</strong>м<strong>е</strong>нту п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния оч<strong>е</strong>нь большо<strong>е</strong> знач<strong>е</strong>ни<strong>е</strong>? По умолчанию<br />

вс<strong>е</strong> эл<strong>е</strong>м<strong>е</strong>нты принадл<strong>е</strong>жат к типу i n t , поэтому нужно пом<strong>е</strong>нять тип п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния при помощи оп<strong>е</strong>ра-<br />

тора<br />

public enum TrickScore ; long {<br />

Sit = 7,<br />

Beg = 2500000000025<br />

} Если принадл<strong>е</strong>жность эл<strong>е</strong>м<strong>е</strong>нт ов п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния к т ипу long явно<br />

н<strong>е</strong> указана, при компиляции появится сообщ<strong>е</strong>ни<strong>е</strong>:<br />

Cannot implicitly convert type 'long' to 'int'.<br />

'<br />

заставля<strong>е</strong>т<br />

компилятор относить эл<strong>е</strong>-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!