14.02.2017 Views

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

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

Saved successfully!

Ooh no, something went wrong!