. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
типы и ссылки<br />
Автоматич<strong>е</strong>ская корр<strong>е</strong>кция слишком<br />
больших знач<strong>е</strong>ний<br />
Вы уж<strong>е</strong> вид<strong>е</strong>ли, что тип d ecim al мож<strong>е</strong>т быть прив<strong>е</strong>д<strong>е</strong>н<br />
к типу i n t. Получа<strong>е</strong>тся, любо<strong>е</strong> число мож<strong>е</strong>т быть прив<strong>е</strong>д<strong>е</strong>но<br />
к любому типу. Но это н<strong>е</strong> означа<strong>е</strong>т сохран<strong>е</strong>ни<strong>е</strong> знач<strong>е</strong>ния.<br />
Прив<strong>е</strong>д<strong>е</strong>м п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нную типа i n t со знач<strong>е</strong>ни<strong>е</strong>м 365<br />
к типу b y te . Число 365 выходит за границы диапазона<br />
этого типа. Но вм<strong>е</strong>сто сообщ<strong>е</strong>ния об ошибк<strong>е</strong> произойд<strong>е</strong>т<br />
циклич<strong>е</strong>ско<strong>е</strong> присваивани<strong>е</strong>: наприм<strong>е</strong>р, 256 посл<strong>е</strong> прив<strong>е</strong>д<strong>е</strong>ния<br />
к типу b y te пр<strong>е</strong>вратится в О, 257 —в 1, а 365 —<br />
в 109. Как только вы дойд<strong>е</strong>т<strong>е</strong> до 255, произойд<strong>е</strong>т п<strong>е</strong>р<strong>е</strong>ход<br />
к нул<strong>е</strong>вому знач<strong>е</strong>нию.<br />
О О<br />
Ещ<strong>е</strong> в глав<strong>е</strong> 2 я начал<br />
комбинировать строки с<br />
цифрами в окнах диалога!<br />
Получа<strong>е</strong>тся, я вс<strong>е</strong> это вр<strong>е</strong>мя<br />
пр<strong>е</strong>образовывал типы данных?<br />
«о Г э ч З Г *<br />
возьми в руку карандаш<br />
О п<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>й<br />
и вв<strong>е</strong>дит<strong>е</strong> сл<strong>е</strong>дующи<strong>е</strong> строки. Попытайт<strong>е</strong>сь<br />
построить программу. Зач<strong>е</strong>ркнит<strong>е</strong> строки с<br />
ошибками. Это помож<strong>е</strong>т понять, для каких<br />
типов прив<strong>е</strong>д<strong>е</strong>ни<strong>е</strong> допустимо, а для каких н<strong>е</strong>т.<br />
i n t m y in t = 10;<br />
b y t e m yByte = (b y te )m y in t;<br />
d o u b le m yDouble = (d o u b le )m y B y te ;<br />
Да! Это д <strong>е</strong>лал за вас оп<strong>е</strong>ратор + .<br />
чВы пользовались оп<strong>е</strong>ратором +, который<br />
автоматич<strong>е</strong>ски пр<strong>е</strong>образовывал данны<strong>е</strong>.<br />
Когда вы добавляли число и логич<strong>е</strong>ско<strong>е</strong><br />
знач<strong>е</strong>ни<strong>е</strong> к строк<strong>е</strong>, указанно<strong>е</strong> вами<br />
знач<strong>е</strong>ни<strong>е</strong> автоматич<strong>е</strong>ски пр<strong>е</strong>образовывалось<br />
к типу string. Оп<strong>е</strong>раторы + (или *,<br />
/ или -), прим<strong>е</strong>н<strong>е</strong>нны<strong>е</strong> к знач<strong>е</strong>ниям различных<br />
типов, автоматич<strong>е</strong>ски пр<strong>е</strong>образовывают<br />
м<strong>е</strong>ньший тип в больший. Вот<br />
прим<strong>е</strong>р:<br />
i n t m yInt = 36,<br />
Посл<strong>е</strong> числа, которо<strong>е</strong> присваива<strong>е</strong>тся<br />
—'double m y F loat = 1 6 . 4D;<br />
m yF loat = m y in t + m y F lo a t;<br />
п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной типа<br />
double, нужно добавлять<br />
р, чтобы Диапазон знач<strong>е</strong>ний типа i n t больш<strong>е</strong> диапазона<br />
знач<strong>е</strong>ний типа f l o a t , оп<strong>е</strong>ратор +<br />
указать ком <br />
пилятору на <strong>е</strong>го пр<strong>е</strong>образу<strong>е</strong>т п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нную m yint к типу<br />
!лринадл<strong>е</strong>жность f l o a t и только потом прибавля<strong>е</strong>т <strong>е</strong><strong>е</strong> к п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной<br />
m<br />
к типу float.<br />
yFloat.<br />
b o o l m yBool =<br />
(b o o l)m y D o u b le;<br />
s t r i n g m y S tr in g = " f a ls e " ;<br />
myBool = (b o o l)m y S tr in g ;<br />
m y S tr in g = ( s t r i n g ) m y i n t ;<br />
m y S tr in g = m y in t . T o S t r in g () ;<br />
myBool =<br />
(b o o l)m y B y te;<br />
myByte = (b y te )m y B o o l;<br />
s h o r t m yShort = ( s h o r t ) m y in t ;<br />
c h a r myChar = ' x ' ;<br />
m y S tr in g = (str in g )m y C h a r;<br />
lo n g myLong = (lo n g )m y in t;<br />
d e c im a l m yDecim al =<br />
(decim al)m yL ong;<br />
m y S tr in g = m y S tr in g + m y in t + myByte<br />
+ m yDouble + myChar;<br />
дальш<strong>е</strong> ► 159