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>ктам п р и п о м о щ и ссы лоч н ы х<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><br />

сл ов о t h i s , с <strong>е</strong>го п о м ощ ь ю д<strong>е</strong>л а<strong>е</strong>тся ссы лка н а т<strong>е</strong>кущ ий экз<strong>е</strong>м п ляр класса.<br />

М<strong>е</strong>тод, заставляющий слона говорить<br />

Д о б а в и м к классу E l e p h a n t м <strong>е</strong>тод, п <strong>е</strong>рвы м п а р ам <strong>е</strong>тр ом к о т о р о г о буд<strong>е</strong>т с о о б щ <strong>е</strong> н и <strong>е</strong> о т о б ъ ­<br />

<strong>е</strong>кта e l e p h a n t . В торы м п а р ам <strong>е</strong>тр ом буд<strong>е</strong>т им я слона:<br />

public void TellMe(string message, Elephant whoSaidIt) {<br />

}<br />

MessageBox.Show(whoSaidlt.Name + ” says: " + message);<br />

М о ж н о д обав и ть м <strong>е</strong>то д b u t t o n 4 _ C l i c k ( ) , н о сд<strong>е</strong>лать э т о н уж н о до оп<strong>е</strong>ратора, п<strong>е</strong>р<strong>е</strong>загружающ<strong>е</strong>го<br />

ссылки( 1 1 o y d = l u c i n d a ;)!<br />

lloyd.TellMe("Hi", lucinda);<br />

О<br />

М ы вы звали м <strong>е</strong>то д T e llM e () (С каж и м н <strong>е</strong>) для Л л о й д а и п <strong>е</strong>р <strong>е</strong>д а л и <strong>е</strong>му два парам<strong>е</strong>тра: с т р о ­<br />

ку H i и ссылку на о б ъ <strong>е</strong>к т L ucinda. П а р а м <strong>е</strong>тр w h o S a i d I t (К то э т о сказал) испол ьзу<strong>е</strong>тся для<br />

доступ а к парам <strong>е</strong>тру Name л ю б о г о сл она, им я к о т о р о го буд<strong>е</strong>т п <strong>е</strong> р <strong>е</strong> д а н о м <strong>е</strong>тоду T e llM e ()<br />

вторы м парам <strong>е</strong>тром .<br />

Вызов одного м<strong>е</strong>тода другим<br />

Д о б а в и м м <strong>е</strong>то д S p e a k T o () к классу E l e p h a n t . И м <strong>е</strong> н н о зд<strong>е</strong>сь мы испол ьзу<strong>е</strong>м к л ю ч <strong>е</strong>в о<strong>е</strong> сл о­<br />

во t h is . О н о явля<strong>е</strong>тся ссы лк ой, позволяющ<strong>е</strong>й объ<strong>е</strong>кту рассказать о с<strong>е</strong>б<strong>е</strong>.<br />

public void SpeakTo(Elephant whoToTalkTo, string message) {<br />

whoToTalkTo.TellMe(message, this);<br />

к-як- что п я ботя р т<br />

П о см о т р и м , как эт о работа<strong>е</strong>т.<br />

Э т о т м <strong>е</strong> т о д к л а с с а E le p h a n t<br />

в(р13Ь1в а <strong>е</strong> т м с т д T a lk T o Q<br />

(П о го в о р и с ), п о з в о л я ю щ и й о д н о м у<br />

lloyd.SpeakToducinda, "Hello") ; с л о н у р а з г о в а р и в а т ь с д р у г и м .<br />

П р и вы зов<strong>е</strong> м <strong>е</strong>то д а S p e a k T o () для Л л о й д а вы исп ол ьзу<strong>е</strong>т<strong>е</strong> пар ам <strong>е</strong>тр t a l k T o (являю щ ийся<br />

ссы лк ой на Л ю си н ду), ч то б ы вы звать м <strong>е</strong>т о д T e llM e () для Л ю си н ды .<br />

WhoToTalkTo.TellMe(message, this);<br />

Ллойд использу<strong>е</strong>т<br />

WhoToTalkTo (со ссылкой на<br />

Люсинду) для вызова Т<strong>е</strong>11М<strong>е</strong>()<br />

ключ<strong>е</strong>во<strong>е</strong> слово this<br />

^зам<strong>е</strong>ня<strong>е</strong>тся ссылкой<br />

.на объ<strong>е</strong>кт Ллойд<br />

lucinda.TellMe(message, [ссылка на Ллойда]);<br />

В р<strong>е</strong>зультат<strong>е</strong> появля<strong>е</strong>тся окно диалога с обращ <strong>е</strong>н и <strong>е</strong>м к Л ю синд<strong>е</strong>:<br />

дальш<strong>е</strong> > 181

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

Saved successfully!

Ooh no, something went wrong!