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.

типы и ссылки<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>да буд<strong>е</strong>т н<strong>е</strong>съ<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>стами и заставить указывать<br />

на разны<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>го.<br />

Это объ<strong>е</strong>кт типа<br />

^иу. Он ОДИН, но на<br />

н<strong>е</strong>го МНОГО ссылок<br />

М<strong>е</strong>тод b u tto n l Clirîf Ar,<br />

мы Form l сод<strong>е</strong>южи^<br />

Для работы с хранящимися<br />

в памяти<br />

объ<strong>е</strong>ктами используются<br />

ссылки,<br />

которы<strong>е</strong> являются<br />

п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>ппыми. Тип<br />

этих п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нных<br />

опр<strong>е</strong>д<strong>е</strong>ля<strong>е</strong>тся классом<br />

объ<strong>е</strong>кта, на который<br />

они ссылаю<br />

тся.<br />

П<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нная<br />

«папа» явля<strong>е</strong>тся<br />

ссылкой на экз<strong>е</strong>м ­<br />

пляр класса Quy.<br />

^т о ссылочны<strong>е</strong><br />

’л<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нны<strong>е</strong>,<br />

указывающи<strong>е</strong> на<br />

ОДИН И ТОТ ЖЕ<br />

ооь<strong>е</strong>кт.<br />

Обращ<strong>е</strong>ни<strong>е</strong> к объ<strong>е</strong>кту никогда н<strong>е</strong> проиходит напрямую. К прим<strong>е</strong>ру, н<strong>е</strong>возможно<br />

записать G u y . G iv e C a s h {), <strong>е</strong>сли G uy принадл<strong>е</strong>жит типу object.<br />

Компилятор н<strong>е</strong> понима<strong>е</strong>т, куда им<strong>е</strong>нно вы обраща<strong>е</strong>т<strong>е</strong>сь, так как в куч<strong>е</strong> мож<strong>е</strong>т<br />

храниться н<strong>е</strong>сколько эк<strong>е</strong>мпляров G uy. Вам нужна ссылочная п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нная,<br />

наприм<strong>е</strong>р, j o e , которой буд<strong>е</strong>т присво<strong>е</strong>н конкр<strong>е</strong>тный экз<strong>е</strong>мпляр G uy<br />

j о <strong>е</strong> - n e w Guy().<br />

Различны<strong>е</strong> м<strong>е</strong>тоды м о ­<br />

гут использовать эк-<br />

ссь/лоч-<br />

НЫМ п <strong>е</strong> р <strong>е</strong> м <strong>е</strong> н н ы м р а ­<br />

з у м н о п р и с в о и т ь р а з н ы <strong>е</strong><br />

в зависимости от<br />

конт<strong>е</strong>кста.<br />

Т<strong>е</strong>п<strong>е</strong>рь можно вызывать м<strong>е</strong>тоды j о <strong>е</strong> . G iv e C a s h ( ), в<strong>е</strong>дь компилятор «зна<strong>е</strong>т»,<br />

к какому экз<strong>е</strong>мпляру обратиться. Как показано на рисунк<strong>е</strong>, возмож<strong>е</strong>н<br />

набор ссылок на один экз<strong>е</strong>мпляр. Можно написать G uy d a d = j о <strong>е</strong> и вызвать<br />

м<strong>е</strong>тод d a d . G iv e C a s h о (папа.ДайД<strong>е</strong>н<strong>е</strong>г()). Им<strong>е</strong>нно этим сын <strong>Дж</strong>о занима<strong>е</strong>тся<br />

каждый д<strong>е</strong>нь!<br />

дальш<strong>е</strong> ► 169

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

Saved successfully!

Ooh no, something went wrong!