. Стиллмен, Дж. Грин - Изучаем 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>-