Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Перед вызовом делегата надо всегда проверять, не равен ли он null.

4. Коrда метод DoSomethingLengthy () вызывает деnеrат, тот, в свою оче­ редь, вызывает метод, на который указывает; в данном случае это метод

DoUpdate ( ) класса Forml.

5. При вызове с помощью деnеrата метод DoUpdate () выполняет обнов­ ление при помощи вызова метода PerformStep ( ) класса ProgressBar:

, н

ам

r , нг

Метод PerformStep ( ) , в свою очередь, заполняет цветом очередные 1 0% полосы индикатора - величину, определяемую свойством Step, установлен­ ным равным 1 О.

6. Управление возвращается методу DoSomethingLengthy ( ) , который продолжает выполнение цикла. По завершении цикла выполняется выход из метода DoSomethingLengthy ( ) и возврат управления методу buttonl_Click ( ) . Этот метод очищает индикатор ProgressBar, уста­ навливая ero свойство Value равным леыПосле этоrо приложение дожи­ дается очередноrо щелчка на одной из кнопок (или пиктоrрамме закры­ тия приложения в правом верхнем yrny окна).

Вот и все. Используя делегат для реализации обратного вызова, программа поддерживает актуальность состояния индикатора завершенности выполнения задания. Если вам необходимо определить тип делегата с параметрами для ре­ ализации обратного вызова, вы можете разработать собственный делегат. Для событий и методов Find ( ) и ForEach ( ) классов коллекций можно воспользо­ ваться аг дlтагд l. йдддхфныделегатами.

Анонимные методы

После того как вы осознаете суть использования делегатов, взгляните на первое упрощение работы с делегатами в С# 2.0. Чтобы уменьшить количество канители при работе с делегатом, можно использовать анонимный метод. Ано­ нимные методы просто записываются более традиционным способом и, хотя синтаксис и некоторые детали различаются, результат, по сути, оказывается одинаковым независимо от того, используете ли вы необработанный делегат, анонимный метод или лямбда-выражение.

Анонимный метод одновременно создает экземпляр делегата и метод, на который он "указывает", прямо "на лету". Вот как выглядят "внутренности" метода DoSomethingLengthy ( ) при применении анонимного метода (см. текст, выделенный полужирным шрифтом):

ГЛАВА 1 9 Делегирование событий а бt

События С#

е#:AA

.-,A(

'1#))(,1!('1A.!

AOA !,.!

,'1.(,1A.A..A

,A:

Aк#(!)

р

в(!

м.

Н

_w_

,!(!'1,A

'1A#: ..-.()-

,'1.

,!(,1!O.

 

,A: Aк#(!)

_!.,(.-

 

 

,'1A,)(#):-.(

 

)!_

.!r.,

'1#..!).,.!)(.

 

!.'1#(.,0

),.!)!)_

.!

!.A),A..)#.(

.!:AA

 

,'1!)(!r.,

,!

)'1#)em

.A...

)

!.'1#(.,(,1.

 

),.!)#(,1.

 

(,1A0#...(,1

-)A,!(,1:A..-

 

! .#)(-,:A...

 

)#..,0

)!.,(.r.,

 

a)!.A..!

 

,!:A..,

)!.,(.-С

 

,!к,#

!.'1#(.,r.,

),.!)

 

 

!..,#A()-

 

.A_

),!:.,.(,1.

(,1A(!,#(,1.

_!.,(.-

 

E.'1!,!

 

.),!:..-.()-

 

)

_w_

)

!)!.A..!)(.

 

,:-

))-..

!.tA,(!)

,!:..!)#(A:

.),!к!

..(A'1SAr.,)#

)

,!,!(,1_

,!(!'1,.

 

 

.#)(#):-A(

.0

'1#.!(#(.JJ

'1.(,1A'1!(,1 (,1!к-(

):-..(.

 

,.!,,.

..

'1#))(,1!('1A..

 

!к!

'1#.AA

,'1.(,1A'1#

вАт

 

1:1ц ц1:1t:tt:tД

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЧАСТЬ 2

зчsрьяоеlееПрояПеемиооеркееоеиддПеемиоПрои тл

 

Проектный шаблон Observer

 

 

 

 

 

 

 

 

 

th.,!W,(-- (,!-()((

-#L3-( ,(L.,!L,, ()#)0

L(,1(c((

.!W.(

,(2.(>)0#

 

!2

#.,0

.,!W,(--0

 

(),#,# L17,Lr

L!20,(r-(

.,!(Lm!.r

t(-(

L .,1W(-(

 

!2

#.,(-(d т(.,(-#,

 

f!,-(

)(

.!,!,!3

,(L.!

 

.!6#)(

 

!..(k

m!>#, 2)(,3

 

.!W.(

.!.32!-(,#.3

 

t#..(#,

)(

,!3 .)!..#t

l!20,(r

.,#.!L,(-.r7,

 

-

lМa(

i

L,().(,,)03

-#m()(2- ..r

1-#.!-.#)(r

 

2((),#,#L!-())0m

!2

#.

!-

!

-(6)0m

.#3L,-(rmd

 

 

 

 

 

 

 

 

 

 

 

 

 

СОВЕТ

!!!!!!B

d!-!!!

 

R!R!!!B-i!!!!!!!

 

R!-!!!B

 

!R!!!B-i,;!!Rn

!!!

L!i

 

oi

R!!

L!!

 

!!!,;L!!

 

R!-R!!!!!!!

!!n

 

М!aE!!!!!B-

t

u

П!! u

!!!!

!-i

 

!!!D!R!!!

 

!!,;a!j !!R!!!R

!!!!!!!!j

 

Зpt

Б

И

p

 

!!!!!!!

 

!E-!B

!!D!!

!!!!!!n!B

! R!-R!!!!!!j

 

!!!a!!!!!j

i

ПR!!

 

 

!!R

!!!!!!R,;E!

!!,;a!!

d!-!!!!

 

!-!!!!!!RB

!

R!!d!!!B!!B

!!!!!!n

 

 

!!

!!!!!!!!

!

!!!a!

!!!!

Пo

!!!

ЕТiКИD!!R!!

io!!RR!!!R

КИDi

 

Зwt

 

p

t

 

БЗwtp БpwЗpТИ

 

pЗpt

 

БЗwpТИ

w

ББЗt

 

 

Зpt

БЗwpТИ

wti

-i

!!!!

ntt oi

 

 

 

 

 

 

 

 

 

!-!!!

 

 

uuR!R!!!!

!-i

!!-!E!!!!!a!

 

!-С!!!!

 

С

!-С!!!!

R!!!!!!n

 

R,;Eo!!!

R!-!!!n!!

 

t!!!a!!

!a! !!-i!!!E!

R,;-С!!!!!o

 

!

!!!!-i!!!B!!a!

 

!!!!L!R!!!

!!-!E!!Eo!j

!-С!!!!!

!!!!!

i!! -i!!!!!!!R!

 

!!!!

! !!e!!!!d!!

 

! !!I!!!!!!

 

!!!!!!!!!!

R!-!!!!i

М!-!E!!!!!!

!!!!!!!!!

 

 

R!!R !-!!

!!a!i

 

R!!!!,;E!Rn

,; !!-!E!!!!!a!

!-С!!!!

!

!!a!!

!!!!Rj!!!!

 

 

!!!!!!R,;Eo!!

!j

 

R!-!!!!

 

!!-!E!!!!!B

 

!-С!!!

 

,;!!!!!!n!!

 

!-

!!!

!R!j

-i!!!a!R!!

!!!!!!!!j

 

!!-!E!!

 

!!!!B

i

!!!!-i!!!!B

!!!d!-!!!

!!D!!

!!!D!R!!!!

 

 

!D-i!!L!!j

R!!R!n

-!!

-!-i

 

!!!!!!L!!!n

 

R!-!!!B

t!!!!j

!!!

!-!!!!!!

 

!i!-i!!!

 

! !!!!!e!BR!

!!

 

R!!R!-

it R!R!!!!

 

! !R!!!B-i!!!!!!

 

R!-!!!B

i

 

 

 

 

 

 

 

 

 

 

 

 

o!!R!!

 

!!-!E!!!!!!

 

!!

!!D!!!

!R!!!!!!B

!!B!!!!!!!!!!!

 

!!r!!n

!!

 

 

 

!!!

С

 

R!,;d!!!!!

t

ХuНu

i!,;d!!!!!oo

 

R!,;d!E!

R!-!!!n

i

СОВЕТ

 

!!

!!!!R!!!!!!!

!!B!!!!!!!!!!!

 

 

!!-i!!!!!

!R!B !

!!,;a!!i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Что такое событие. Публикация и подписка

 

 

 

 

 

 

omp.)!3(2 ()(.!W(3

 

L!20,(3

r-.r#,Lr

W(2#,(dth0(

-)!W(# .,1W(# .

.(

.!.

 

.(L0-(#

,#L3 )( W(2#

( .!L.#

,!W!## .!L,(-.r7,

- -(ch .!>,!-03

 

rt(<i

#i

 

.(.c(r

W(Ж#,0.,#.L,(-.r#,

L!2!3

2.(,#.r

 

С

Ч(

>(,(,#un.(

 

!..(Lr

 

>(.!-

С

 

Ч

,(.

unk>,!

,(.(r

-(,(

(c(r

 

ch(2.!)(

.,!#.,(,!-()(r

 

 

Ч

Ч

>(L,! )(20-(#

,Lr

 

паР

w

а

С

п

 

 

 

э,!

()(.!W

(r

.Ч!,!,17un

 

r (L.!.3217

 

- .())!3

 

W.(-#

)!

-0

)#

.!.6)0

 

2(20-(,3

>,!

ch(2.!)

 

Ч

Ч

­

 

Рдch(2.!)!-

 

 

 

 

 

L()!3

 

,#,-()!.!WЧ

(#3 т(2.7.(,#.(

 

 

,! ,#

6#

.!..(L>(.(

 

( )(2.7.(#-03

 

!2

#.,

(2.(,#.3ч

 

 

 

 

 

 

гt4p4

Делегирование событий

и

йн

Как издатель оповещает о своих событиях

 

 

.!20

!А!-#

-

(

!3 -!2-!6)!-,(

 

.!..(-n

( n. (--

!2З1-:1#, .#.#

 

(,

 

( -!!.-#.-,-17e##

 

 

-!20.(#

.,(-#,)!

1:#.17e(-

!2,(2!-

 

 

pkАuttrуr-Т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i m

 

q

 

 

 

 

 

 

1.Ч

(. 3!-! #!

 

b-(3

 

 

 

 

 

 

 

 

 

 

 

 

А!ech

#( -,ch ,# ,

!- 2-i

!.#

(!,3

!- ima

 

 

 

 

 

 

 

 

 

 

 

 

 

А!ech3(

#(-,chb!,# ( ..

 

 

 

 

 

1.Ч

(. !

,#

 

А!e

ch3(#(-

b!,#

,3-!th

А!ech3 (#(-,

з

 

 

 

ompS,#.#:#)(у

.#.#

(,(

(

-!20.(1

-!!2eV7.

--#-1 -(,1

r!..(-trу(n(я .!

 

2,! .!6з:!-V.b

 

l!20,(#

 

 

S ПimТПima-!6)!

,(1--V.,(-(.3

n(n

.#,#-#))17

 

 

з(.(

.#:#W(

(

S Тдimдima

S eosТгS

i !n(

q.!

)C.(n(#

-!20,(1

T# ,VL-0i

 

.з7.-1

п.! -1#W! :(chb

()f,(-.,1

1,(

 

.:1

)(F

 

 

 

 

 

 

jО!Н! ПСИМВЕТА

МОМСЕТЕВОЕТСМeВТЕХИВАBttИ!АС

КИseосКmBD!КИИЗВ-

 

НИ ЕТИПСВВeВ!СЕТСНС!ОЕТОСОЗЕТС1nСBВЕТАОЕТЕЕТИВНССЗОl АОЕТОИБЕТО

СОВЕТ

НВ АЕТLВССЕТТЕХЧ МАВ

ПИОiЕ

СВ!ОЗВТЕХВСcИНMВВПС3oСН !ОВ ЕТОПВВBВОЗ

ЕТО'ИЕТСВЗЕЗiСАПСОАЕТССНВННЕЗl ПСИЗВСОЗОПИАLННОИЗВЕТОВИ!ИНМЗ

 

 

ПНВЕТАНОПОМВoВНИВ!ПСААОЗor

 

.РОeСС1ПИ/НЕr АОЕТЕЕТИНМОПr 3/СН

 

АОЕТЕЕТiDnВD!r BЕТЗПСИЗВС.ti ПСО

ССЗЗЕTDdoDКИ-Р 55-КИНЧМВЕТoАСИЕТВ

 

!НИr n04/.tiС9 ОeСААor ККР!

!1ОМВoСВЕТ!ЕТTЕТОЗАОЕТЕЕТИИАПВВB3oИЗ

 

ОЕТСС1ОЗ

 

 

 

 

 

 

 

 

 

 

 

 

 

lВВАT МЕТОСОВeИННОВАПОМОТСВВАЕТСМeНВЕТАОЕТОИВВeВ

СKNОПСВВВВННЕe

1

М

НВВССrЕТ

vx.ti

 

 

 

 

 

 

 

 

 

 

 

 

 

CЧАСТЬ 2 тaфдгт еоsоавдетваоты ееодитаощаыяява отыевдиеыииси

Соседние файлы в папке Информатика