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.

пр<strong>е</strong>ступл<strong>е</strong>ни<strong>е</strong> повт орилось<br />

V<br />

^Возьмі Возьми 8 руку кйрандаш-<br />

Вот код, описы ваю щ ий б итву м <strong>е</strong>ж ду В <strong>е</strong>ликол<strong>е</strong>пны м и Ж ул и ком (а такж <strong>е</strong><br />

с а рм и<strong>е</strong>й клонов). Н арисуйт<strong>е</strong>, что происходит в куч<strong>е</strong> при создании<br />

экз<strong>е</strong> м пляров кл асса F i n a l B a t t l e .<br />

c l a s s F i n a l B a t t l e {<br />

p u b l i c C l o n e F a c t o r y F a c t o r y = new C l o n e F a c t o r y ( ) ;<br />

p u b l i c L i s t < C l o n e > C lo n e s = ne w L i s t < C l o n e > 0 { .<br />

p u b l i c S w in d le r s E s c a p e P l a n e e s c a p e P la n e ;<br />

]<br />

p u b l i c F i n a l B a t t l e () {<br />

V i l l a i n s w i n d l e r = new V i l l a i n ( t h i s ) ;<br />

u s i n g ( S u p e r h e r o c a p t a in A m a z in g = ne w S u p e r h e r o O ) {<br />

F a c t o r y . P e o p l e l n F a c t o r y . A d d ( c a p t a i n A m a z i n g ) ;<br />

F a c t o r y . P e o p l e l n F a c t o r y . A d d ( s w i n d l e r )<br />

c a p t a i n A m a z i n g . T h i n k (" Я у н и ч т о ж у с с ы л к и н а к л о н ы ,<br />

о д н у з а о д н о й " ) ;<br />

c a p t a i n A m a z i n g . I d e n t i f y T h e C l o n e s ( C l o n e s ) ;<br />

c a p t a in A m a z in g . R e m o v e T h e C lo n e s ( C lo n e s ) ;<br />

s w i n d l e r . T h i n k ( " Ч <strong>е</strong> р <strong>е</strong> з н <strong>е</strong> с к о л ь к о м и н у т м о я а р м и я с т а н <strong>е</strong> т м у с о р о м " ) ;<br />

s w i n d l e r . T h i n k ( " ( б у д <strong>е</strong> т с о б р а н а<br />

e<br />

e s c a p e P la n e = ne w S w i n d l e r s E s c a p e P l a n e ( s w i n d l e r ) ;<br />

s w i n d l e r . T r a p C a p t a i n A m a z i n g ( F a c t o r y ) ;<br />

M e s s a g e B o x .S h o w (" Ж у л и к у б <strong>е</strong> ж а л " ) ;<br />

[ S e r i a l i z a b l e ]<br />

c l a s s S u p e r h e r o : I D i s p o s a b l e {<br />

Как 5ydem выгляд<strong>е</strong>ть куча посл<strong>е</strong><br />

зітуска конструктора FinalBattle<br />

(финальная 5итваУ<br />

p r i v a t e L i s t < C l o n e > c lo n e s T o R e m o v e = ne w L i s t < C l o n e > ( ) ;<br />

p u b l i c v o i d I d e n t i f y T h e C l o n e s ( L i s t < C l o n e > c lo n e s ) {<br />

f o r e a c h ( C lo n e c l o n e i n c lo n e s )<br />

C lo n e s T o R e m o v e . A d d ( c lo n e ) ;<br />

}<br />

p u b l i c v o i d R e m o v e T h e C lo n e s ( L is t < C lo n e > c l o n e s ) {<br />

f o r e a c h ( C lo n e c l o n e i n c lo n e s T o R e m o v e )<br />

c l o n e s . R e m o v e ( c l o n e ) ;<br />

, ■■■ ^2>&cb долж<strong>е</strong>н 5ыть дополнит<strong>е</strong>льный код (вклю-<br />

^ т ю щ Т м <strong>е</strong> т о д PisposeQ. р<strong>е</strong>ализующии ин-<br />

, ■■■ \ т<strong>е</strong>р%<strong>е</strong>йс IDisposable). Но он скрыт, так как н<strong>е</strong><br />

^ им<strong>е</strong><strong>е</strong>т знач<strong>е</strong>ния Эля р<strong>е</strong>ш<strong>е</strong>ния задачи.<br />

c l a s s V i l l a i n {<br />

p r i v a t e F i n a l B a t t l e f i n a l B a t t l e ;<br />

p u b l i c V i l l a i n ( F i n a l B a t t l e f i n a l B a t t l e ) {<br />

t h i s . f i n a l B a t t l e = f i n a l B a t t l e ;<br />

}<br />

p u b l i c v o i d T r a p C a p t a in A m a z i n g ( C lo n e F a c t o r y f a c t o r y ) {<br />

f a c t o r y . S e l f D e s t r u c t . T i c k += new E v e n t H a n d l e r ( S e l f D e s t r u c t _ T i c k ) ;<br />

f a c t o r y . S e l f D e s t r u c t . I n t e r v a l = 600; ~<br />

f a c t o r y . S e l f D e s t r u c t . ^ t a r t ( ) ;<br />

}<br />

p r i v a t e v o i d S e l f D e s t r u c t _ T i c k ( o b j e c t s e n d e r , E v e n t A r g s e ) {<br />

f i n a l B a t t l e . F a c t o r y = n u l l ;<br />

}<br />

Можно пр<strong>е</strong>дположить, что<br />

клоны были созданы при<br />

помощи инициализаторй<br />

колл<strong>е</strong>кции. I<br />

Р'^сунок<br />

1<br />

Нарисуйт<strong>е</strong>, что<br />

происходит о м о ­<br />

м <strong>е</strong> н т создания эк­<br />

з<strong>е</strong>мпляра ооь<strong>е</strong>кта<br />

SwindlersEscapePlane<br />

(План поб<strong>е</strong>га Жулика).<br />

634 глава t4

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

Saved successfully!

Ooh no, something went wrong!