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