.NET рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдФрд░ рдИрд╡реЗрдВрдЯ

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗред рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреЗ рд╕рд╛рдереА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ C # рднрд╛рд╖рд╛ рдХреЗ рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдмреАрдЪ, рдбреЗрд▓рд┐рдЧреЗрдЯреНрд╕ рдФрд░ рдИрд╡реЗрдВрдЯ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреА рд╣реИ, рдпрд╛ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХреБрдЫ рднреНрд░рдо рдХреА рд╡рдЬрд╣ рд╕реЗред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЙрди рд╕реНрдХреАрдЯ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рдкрд░ "рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░" рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИ рдЬреЛ C # /.NET рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ , рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛрддреА рд╣реИред

рдпрд╣рд╛рдБ рдкреНрд░рд╕реНрддреБрдд рдЕрдиреБрд╡рд╛рдж рдореБрдлреНрдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ "рдирд┐: рд╢реБрд▓реНрдХ", рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрдиреБрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪреВрдХ, рд╕рд░рд▓реАрдХрд░рдг рдФрд░ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреЗ рд╕рд╛рде, рддреЛ рд╕рдм рдХреБрдЫ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдореВрд▓ рдХрд╛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд, рдкрд░рд┐рд╖реНрдХреГрдд рдФрд░ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдореИрдВ рд╕рд░реНрдЧреЗрдИ рддреЗрдкреНрд▓рд╛рдХреЛрд╡ рдЙрд░реНрдл рд╕рд░реНрдЧреЗрдИрдЯреА рдХрд╛ рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдореВрд▓реНрдп рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ред

рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдШрдЯрдирд╛рдУрдВ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛрддреА рд╣реИред рдФрд░ рд╕реА # рд╕реНрдерд┐рддрд┐ рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдлрд╝реАрд▓реНрдб-рдЬреИрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдПрдХ рдФрд░ рдмрд┐рдВрджреБ "рдкреНрд░рддрд┐рдирд┐рдзрд┐" рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рднреНрд░рдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрдИ рдЕрд░реНрде рд╣реИрдВред рдХрднреА-рдХрднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд╛рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдирд╛рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрди рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ - рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрджрд╛рд╣рд░рдг, рдФрд░ рдЬрдм рдореИрдВ "рдкреНрд░рддрд┐рдирд┐рдзрд┐" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░


рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдЖрдк рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рд╣реИ (рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдЗрд╕рдХреЗ рд╕рднреА рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ (рд░реЗрдл рдФрд░ рдЖрдЙрдЯ) рдкреИрд░рд╛рдореАрдЯрд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рдордЭреВрдВрдЧрд╛ред рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп)ред рдлрд┐рд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рдбреЗрд▓рд┐рдЧреЗрдЯреНрд╕ рдХреА рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдмрд╣реБрдд рд╕рд╛рд░ рд╣реИред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рд▓рдХреНрд╖реНрдп рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн (рдкреЙрдЗрдВрдЯрд░, рд▓реЗрдмрд▓) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ (рд╡рд░реНрдЧ рдпрд╛ рд╕рдВрд░рдЪрдирд╛) рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд┐рдзрд┐ рд╕реНрдерд┐рдд рд╣реИред

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ delegate рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдпрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 namespace DelegateArticle { public delegate string FirstDelegate (int x); public class Sample { public delegate void SecondDelegate (char a, char b); } } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╣реИ DelegateArticle.FirstDelegate , рдЬреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реНрддрд░ рдкрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде "рд╕рдВрдЧрдд" рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдк рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ int рдФрд░ рдкреНрд░рдХрд╛рд░ string рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╣реИ DelegateArticle.Sample.SecondDelegate , рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╕рджрд╕реНрдп рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде "рд╕рдВрдЧрдд" рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдк char рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдФрд░ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ void рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ void ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкрд╛рд╕ рдПрдХ public рдкрд╣реБрдВрдЪ public ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдВрд╢реЛрдзрдХ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдкрд╣реБрдБрдЪ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рднреА рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдпрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛, private рд╕рдВрд╢реЛрдзрдХ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рдорд╛рдиред

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдк static рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ delegate рдХреАрд╡рд░реНрдб рдХрд╛ рдЕрд░реНрде рд╣рдореЗрд╢рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдирд╛рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп рдЙрд╕реА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдШреЛрд╖рд┐рдд рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ System.MulticastDelegate рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬреЛ рдХрд┐ System.Delegate рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, MulticastDelegate рд╕реЗ рдХреЗрд╡рд▓ рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - Delegate рдФрд░ MulticastDelegate рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдкрд╣рд▓реВ рдореЗрдВ рд╣реИред рдпреЗ рдЕрдВрддрд░ .NET 1.0 рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдереЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛, рдФрд░ Microsoft рдиреЗ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирд┐рд░реНрдгрдп рдмрд╣реБрдд рджреЗрд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЬрдм рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ .NET рдХреА рдиреАрдВрд╡ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧрдВрднреАрд░ рдмрджрд▓рд╛рд╡ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреАред рдЗрд╕рд▓рд┐рдП, Delegate рдФрд░ MulticastDelegate рдХреЛ рдПрдХ рдФрд░ рдПрдХ рд╣реА MulticastDelegate ред

рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЬрд┐рд╕реЗ рдЖрдк MulticastDelegate рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд╕рджрд╕реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН: Object рдФрд░ IntPtr рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛, рд╕рд╛рде рд╣реА рддреАрди рд╡рд┐рдзрд┐рдпрд╛рдВ: Invoke , BeginInvoke рдФрд░ EndInvoke ред рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рдкрд╛рд╕ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рддреАрди рд╡рд┐рдзрд┐рдпрд╛рдВ рд╡рд╕реНрддреБрддрдГ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ - рдпрд╣ рдШреЛрд╖рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП "рдЕрдиреБрдХреВрд▓" рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо FirstDelegate рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП "рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА" рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

 public string Invoke (int x); public System.IAsyncResult BeginInvoke(int x, System.AsyncCallback callback, object state); public string EndInvoke(IAsyncResult result); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Invoke рдФрд░ EndInvoke рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ Invoke рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдкрд╣рд▓рд╛ BeginInvoke рдкреИрд░рд╛рдореАрдЯрд░ред рд╣рдо рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ Invoke рд╡рд┐рдзрд┐ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ BeginInvoke рдФрд░ EndInvoke ред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг: рдореВрд▓ рдмрд╛рддреЗрдВ


рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрд▓реЗрдЦ рдкреНрд░рддрд┐рдирд┐рдзрд┐ # рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП C # 2.0 рдФрд░ 3.0 рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ C # 4.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП рдереЗред рдХреНрд▓реЛрдЬрд░, рдж рдмреНрдпреВрдЯреА рдСрдл рдХреНрд▓реЛрдЬрд░ рдкрд░ рдореЗрд░рд╛ рдЕрд▓рдЧ рд▓реЗрдЦ, рдирдП рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ C # 2.0 рдФрд░ 3.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдЕрдзреНрдпрд╛рдп 5, 9 рдФрд░ 13 рдореЗрдВ рдореЗрд░реА рдкреБрд╕реНрддрдХ " рд╕реА # рдбреЗрде " рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдореИрдВ рд╕реА # 1.0 / 1.1 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рддрддреНрдХрд╛рд▓ рд╢реИрд▓реА рдХрд╛ рдкрд╛рд▓рди рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╢реИрд▓реА рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ "рд╣реБрдб рдХреЗ рдиреАрдЪреЗ" рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрдм, рдЬрдм рдЖрдк рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк C # 2.0, 3.0 рдФрд░ 4.0 рд╕реЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рдХреА рджреГрдврд╝ рд╕рдордЭ рдХреЗ рдмрд┐рдирд╛, рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА "рдирдИ" рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрд╕рд╣рдиреАрдп рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖реНрдп рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╕реНрддреБ (рд╡рд░реНрдЧ рдпрд╛ рд╕рдВрд░рдЪрдирд╛) рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реИред рд╕реАрдПрд▓рдЖрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрдиреНрдп, рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд░реВрдкреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдЯреИрдЯрд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдбреЗрд▓реАрдЧреЗрдЯ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЯрд╛рд░рдЧреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ MSDN рдкрд░ System.Delegate рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм, рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рддреЛ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рджреЛ "рдпреВрдирд┐рдЯ" рдбреЗрдЯрд╛ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдареАрдХ рд╣реИ, рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ), рд▓реЗрдХрд┐рди рдЖрдк рд╕рдВрдХрд▓рдХ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдмрддрд╛рддреЗ рд╣реИрдВ? рд╣рдо C # рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ " рдкреНрд░рддрд┐рдирд┐рдзрд┐-рдирд┐рд░реНрдорд╛рдг-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ " рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдирдП рдкреНрд░рддрд┐рдирд┐рдзрд┐-рдкреНрд░рдХрд╛рд░ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐) рдХрд╛ рдПрдХ рд░реВрдк рд╣реИред рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рддреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ (рдпрд╛ рд╕реА # 2.0 рдореЗрдВ рдПрдХ рд╕рдВрдЧрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░) рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдПрдХ "рд╡рд┐рдзрд┐ рд╕рдореВрд╣" рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реЛред рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд░реНрдХ рдФрд░ рдХреЛрд╖реНрдардХ рдХреЗред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рддрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╣реИрдВред

 /*      d1  d2 .  InstanceMethod   ,    ,       ( ). ,     тАФ this,      . */ FirstDelegate d1 = new FirstDelegate(InstanceMethod); FirstDelegate d2 = new FirstDelegate(this.InstanceMethod); /*  (d3)    ,     ,      ,        . */ FirstDelegate d3 = new FirstDelegate(anotherInstance.InstanceMethod); /*   (d4)      ,  ,     ;        . */ FirstDelegate d4 = new FirstDelegate(instanceOfOtherClass.OtherInstanceMethod); /*    (d5)     ,      ,     ( ). */ FirstDelegate d5 = new FirstDelegate(StaticMethod); /*  (d6)      ,       . */ FirstDelegate d6 = new FirstDelegate(OtherClass.OtherStaticMethod); 

рдЬрд┐рд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрд╛рдд рдХреА рдереА, рдЙрд╕рдХреЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ - System.IntPtr рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдВрджрд░реНрднред System.IntPtr (MSDN рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ System.Object (MSDN рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд▓рдХреНрд╖реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЬреЛ рдпрджрд┐ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реИ, рддреЛ рдЕрд╢рдХреНрдд рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрджреГрд╢реНрдп (рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реЗ рдмрд╛рд╣рд░) рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ рдирд┐рдЬреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рддреНрд╡рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЙрд╕ рд╕рдордп рд╡рд╕реНрддреБ рдХреА рд╡рд┐рдзрд┐ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЛрдиреЛрдВ рдХреЛ (рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ) рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ (рдФрд░ рдХреЗрд╡рд▓ рдпрджрд┐) рдХреЛрдб рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди, рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдФрд░ рджрд╛рдпрд░реЗ рдХреА рдЕрдирджреЗрдЦреА рдХреА рдЬрд╛рддреА рд╣реИред рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреА рдмрд╛рдд ...

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдирд┐рдпрдорд┐рдд рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг d1 рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ delegate string FirstDelegate (int x) рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рдКрдкрд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
 string result = d1(10); 

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ "рднреАрддрд░" (рдпрд╛ "рд╕рдВрджрд░реНрдн рдореЗрдВ", рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ) рд╡рд╕реНрддреБ рдЙрджрд╛рд╣рд░рдг, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдЬреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреЙрдореНрдкреИрдХреНрдЯ, рдЬрд┐рд╕рдореЗрдВ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдПрдХ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдиреАрдЪреЗ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдзрд┐ рд╣реИред DelegateTest.StaticMethod рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ StaticMethod рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ - рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред

 using System; public delegate string FirstDelegate (int x); class DelegateTest { string name; static void Main() { FirstDelegate d1 = new FirstDelegate(DelegateTest.StaticMethod); DelegateTest instance = new DelegateTest(); instance.name = "My instance"; FirstDelegate d2 = new FirstDelegate(instance.InstanceMethod); Console.WriteLine (d1(10)); //    "Static method: 10" Console.WriteLine (d2(5)); //    "My instance: 5" } static string StaticMethod (int i) { return string.Format ("Static method: {0}", i); } string InstanceMethod (int i) { return string.Format ("{0}: {1}", name, i); } } 

рдбреЗрд▓реАрдЧреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП C # рд╕рд┐рдВрдЯреИрдХреНрд╕, рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рд╣реИ рдЬреЛ рдЗрдирд╡реЛрдХ рд╡рд┐рдзрд┐ рдХреЗ рдЗрдирд╡реЛрдХреЗрд╢рди рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ BeginInvoke/EndInvoke рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХред

рдбреЗрд▓реАрдЧреЗрдЯ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди

рдбреЗрд▓рд┐рдЧреЗрдЯреНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд (рд╕рдВрдпреБрдХреНрдд рдФрд░ рдШрдЯрд╛рдпрд╛) рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╡рд┐рдзрд┐ рдФрд░ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд┐рдпрд╛ред рдпрд╣ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ рдЬреЛ рд╕рдорд╛рди рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ "рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рдирд┐рдзрд┐" (рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐) рдХрд╣реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдРрд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╣реИрдВ, рдЬреЛ рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ (рдпрд╛рдиреА рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрднрд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВ)ред рдореИрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ "рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐" (рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐) рдХрд╣реВрдВрдЧрд╛ред рдХрдИ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдмрди рд╕рдХрддреА рд╣реИред рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ "рдХреЙрд▓ рд╕реВрдЪреА" рдпрд╛ "рдордВрдЧрд▓рд╛рдЪрд░рдг рд╕реВрдЪреА" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдХреЙрд▓ рд╕реВрдЪреА, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ (рдЬреЛрдбрд╝реЗ) рдХреЙрд▓ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред

рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рд╣рдореЗрд╢рд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрддреЗ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ (рд╕рд╛рде рд╣реА рдШрдЯрд╛рддреЗ рд╕рдордп - рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ), рдПрдХ рдирдпрд╛ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА: рдпрджрд┐ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП String.PadLeft рдХреЛ рд▓рд╛рдЧреВ String.PadLeft , рддреЛ рд╡рд┐рдзрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред

рджреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдпреЛрдЬрди ("рдЬреЛрдбрд╝" рднреА рд╣реЛрддрд╛ рд╣реИ) рдЖрдорддреМрд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рддрд╛рд░ рдереЗред рдЗрд╕реА рддрд░рд╣, рдШрдЯрд╛рдирд╛ (рд╢рдмреНрдж "рдбрд┐рд▓реАрдЯ" рднреА рд╣реЛрддрд╛ рд╣реИ) рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рджреВрд╕рд░реЗ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдШрдЯрд╛рд╡ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдШрдЯрд╛рддреЗ рд╕рдордп, рдШрдЯрд╛рд╡ рдХреЛ рдХреЙрд▓ рд╕реВрдЪреА рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдореВрд▓ (рдХрдо) рдХреЙрд▓ рд╕реВрдЪреА рдореЗрдВ рдЙрди рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрдЯреМрддреА рдпреЛрдЧреНрдп рдХреЙрд▓ рд╕реВрдЪреА рдореЗрдВ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо (рдЕрдВрддрд░) рдореВрд▓ рд╕реВрдЪреА рд╣реЛрдЧреАред рдЕрдиреНрдпрдерд╛, рдпрджрд┐ рдореВрд▓ рд╕реВрдЪреА рдореЗрдВ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдШрдЯрд╛рдП рдЧрдП рднрд╛рдЧ рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдВрддрд┐рдо рдШрдЯрдирд╛рдПрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд░рд╣реЗрдВрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдпреЛрдЬрди рдФрд░ рдШрдЯрд╛рд╡ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдореЗрдВ, рд╢рд╛рдмреНрджрд┐рдХ рдбреА 1, рдбреА 2, рдбреА 3 рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрджрдирд╛рдо [d1, d2, d3] рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рддреАрди рд╕рд╛рдзрд╛рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреА 1 рдХреЛ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рдбреА 2, рдФрд░ рдлрд┐рд░ рдбреА 3ред рдЦрд╛рд▓реА рдХреЙрд▓ рд╕реВрдЪреА рд╢реВрдиреНрдп рд╣реИред
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдкрд░рд┐рдгрд╛рдо
рдирд▓ + рдб резd1
d1 + рдЕрд╢рдХреНрддd1
рдбреА 1 + рдбреА 2[рдбреА рез, рдбреА реи]
d1 + [d2, d3][рдбреА рез, рдбреА реи, рдбреА рей]
[рдбреА рез, рдбреА реи] + [рдбреА реи, рдбреА рей][рдбреА рез, рдбреА реи, рдбреА реи, рдбреА рей]
[рдбреА рез, рдбреА реи] - рдбреА резd2
[рдбреА рез, рдбреА реи] - рдбреА реиd1
[рдбреА рез, рдбреА реи, рдбреА рез] - рдбреА рез[рдбреА рез, рдбреА реи]
[рдбреА рез, рдбреА реи, рдбреА рей] - [рдбреА рез, рдбреА реи]d3
[рдбреА рез, рдбреА реи, рдбреА рей] - [рдбреА реи, рдбреА рез][рдбреА рез, рдбреА реи, рдбреА рей]
[рдбреА рез, рдбреА реи, рдбреА рей, рдбреА рез, рдбреА реи] - [рдбреА рез, рдбреА реи][рдбреА рез, рдбреА реи, рдбреА рей]
[рдбреА рез, рдбреА реи] - [рдбреА рез, рдбреА реи]рдЕрд╢рдХреНрдд

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд▓рдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ Delegate.Combine рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕реА рддрд░рд╣, рдШрдЯрд╛рд╡ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ Delegate.Remove рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡ рд╕рдВрдЪрд╛рд▓рдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд╢реНрд▓рд┐рд╖реНрдЯ рд╢рд░реНрдХрд░рд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ C # рд╕рдВрдХрд▓рдХ, рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдорд┐рд▓рддреЗ рд╣реБрдП, рдЗрд╕реЗ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдФрд░ рд░рд┐рдореВрд╡ рдореЗрдердбреНрд╕ рдореЗрдВ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдФрд░ рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╕реНрдерд┐рд░ рд╣реИрдВ, рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрд╢рдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡ рдСрдкрд░реЗрдЯрд░ рд╣рдореЗрд╢рд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрд╢рди d1 += d2 рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ d1 = d1+d2 рдмрд░рд╛рдмрд░ рд╣реИ; рдШрдЯрд╛рд╡ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╣реИред рдлрд┐рд░ рд╕реЗ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдФрд░ рдШрдЯрд╛рд╡ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ; рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЪрд░ d1 рдмрд╕ "рдкреБрд░рд╛рдиреЗ" d1 рдФрд░ d2 рд╕реЗ рдорд┐рд▓рдХрд░ рдирдП рдмрдирд╛рдП рдЧрдП рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЬреЛрдбрд╝ рдФрд░ рд╣рдЯрд╛рдирд╛ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЙрд▓ рдХрд╛ рдХреНрд░рдо x + = y; x - = y; рдПрдХ рдЦрд╛рд▓реА рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд░рд╛рдмрд░ (рд╡реЗрд░рд┐рдПрдмрд▓ x рдореЗрдВ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА, рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред )ред

рдпрджрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рд╡рд╛рдкрд╕реА рдорд╛рди рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ) рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ "рд╕рдВрдпреБрдХреНрдд" рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рдЗрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ "рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛" рд░рд┐рдЯрд░реНрди рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЙрд▓ рд╕реВрдЪреА рдореЗрдВред

рдпрджрд┐ рдПрдХ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдХреЙрд▓ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ), рдФрд░ рдЬрдм рдЗрд╕реЗ рдХреБрдЫ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдлреЛрди рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХреЙрд▓ рд╕реВрдЪреА рд╕реЗ рдЕрдиреНрдп рд╕рднреА рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрднреА рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдШрдЯрдирд╛рдУрдВ


рдкрд╣рд▓реА рдЪреАрдЬреЗрдВ рдкрд╣рд▓реА: рдШрдЯрдирд╛рдПрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдЕрдм рдлрд┐рд░ рд╕реЗ:
рдШрдЯрдирд╛рдПрдБ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВред

рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ C # рднрд╛рд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдореИрдВ рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЙрдиреНрд╣реЗрдВ "рдЬреИрд╕реЗ" рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реИред рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ "рддрд░рд╣ рдХреА рддрд░рд╣" рдлрд╝реАрд▓реНрдб рджреЗрдЦрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИрдВ - рдЖрдк рдРрд╕реЗ рдЧреБрдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдШрдЯрдирд╛рдХреНрд░рдо рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЬреЛрдбрд╝-рдШрдЯрд╛рд╡ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред

рдИрд╡реЗрдВрдЯ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рдЖрдИрдПрд▓ (рд╕реАрдЖрдИрдПрд▓, рдПрдордПрд╕рдЖрдИрдПрд▓) рдореЗрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ "рдлрд╝реНрд░реЗрдордпреБрдХреНрдд" рд╣реИрдВ рдФрд░ рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рддрд╛рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдпрд╣ "рд╕рд░рд▓" рддрд░реАрдХреЛрдВ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рд╕реЗ "рдбреАрд▓" рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдзрд┐рдпрд╛рдБ рдСрдкрд░реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдРрдб рдФрд░ рд░рд┐рдореВрд╡ рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рд╕реВрдЪреА рд╕реЗ / рд╕реЗ рдбреЗрд▓рд┐рдЧреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдШрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ (рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рдерд╛ - рдПрдХ рдмрдЯрди, рдПрдХ рдЯрд╛рдЗрдорд░, рдпрд╛ рдПрдХ рдЕрдЦрдВрдб рдЕрдкрд╡рд╛рдж рдкрд░ рдПрдХ рдХреНрд▓рд┐рдХ), рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рдмрджрд▓реЗ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ)ред рдЬреНрдЮрд╛рдд рд╣реЛ рдХрд┐ C # рдореЗрдВ, рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЗрдирд╡реЙрдЗрд╕ рдХрд░рдирд╛ рдЗрд╡реЗрдВрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ C # рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ eventName += delegateInstance;рдФрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ eventName -= delegateInstance;, рдЬрд╣рд╛рдВ рдпрд╣ eventNameрдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП myForm.Click) рдпрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MyClass.SomeEvent)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдерд┐рд░ рдШрдЯрдирд╛рдПрдВ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИрдВред

рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрд╡рдпрдВ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдРрдб рдФрд░ рд░рд┐рдореВрд╡ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ; рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рд╣реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдЧреЗрдЯрд░реНрд╕ рдФрд░ рдЗрд╡реЗрдВрдЯ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде (рд▓реЗрдХрд┐рди) рдЧреБрдгреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдкрддреНрддрд┐ рд╣реИSystem.EventHandlerред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдРрдб рдФрд░ рд░рд┐рдореВрд╡ рдореЗрдердбреНрд╕ рдореЗрдВ, рдбреЗрд▓реАрдЧреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╣рд╛рдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ - рдореЗрдердбреНрд╕ рдореЗрд╕реЗрдЬ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╡реЗ рдХрд╣рддреЗ рдереЗред рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред

 using System; class Test { public event EventHandler MyEvent //  MyEvent   EventHandler { add { Console.WriteLine ("add operation"); } remove { Console.WriteLine ("remove operation"); } } static void Main() { Test t = new Test(); t.MyEvent += new EventHandler (t.DoNothing); t.MyEvent -= null; } //-,        EventHandler void DoNothing (object sender, EventArgs e) { } } 

рдЙрди рдХреНрд╖рдгреЛрдВ рдЬрдм рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ valueрд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╢рд╛рдпрдж рд╣реА рдХрднреАред рдФрд░ рдпрджреНрдпрдкрд┐ рдЬрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡реЗ рдЕрддреНрдпрдВрдд рджреБрд░реНрд▓рдн рд╣реИрдВ, рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рдИрд╡реЗрдВрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдИрд╡реЗрдВрдЯ рд╡рд┐рд╡рд░рдг рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡рд╣ рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рдд рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдШрдЯрдирд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрд╢рдХреНрдд рд╣реЛрдВрдЧреАред

рдХреНрд╖реЗрддреНрд░ рдЬреИрд╕реА рдШрдЯрдирд╛рдПрдБ


рд╕реА # рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдПрдХ "рдлрд╝реАрд▓реНрдб-рдЬреИрд╕реА рдШрдЯрдирд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд▓рдВрдмрд╛" рд░реВрдк (рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде "рд╢рд░реАрд░" рдХреЗ рдмрд┐рдирд╛ред
 public event EventHandler MyEvent; 

рдпрд╣ рдлрд╝реЙрд░реНрдо рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рдФрд░ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдШрдЯрдирд╛ рдмрдирд╛рддрд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рдПрдХреНрд╕реЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рдореЛрдбрд┐рдлрд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИрд╡реЗрдВрдЯ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдИрд╡реЗрдВрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рд╣рдореЗрд╢рд╛ рдирд┐рдЬреА рд╣реЛрддрд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рдХреЗ рдирд┐рд╣рд┐рдд рдирд┐рдХрд╛рдп рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдбреЗрд▓рд┐рдЧреЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ / рд╕реЗ рдбреЗрд▓рд┐рдЧреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд▓реЙрдХ рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред C # 1.1 MyEventрдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдШрдЯрдирд╛ рдирд┐рдореНрди рдХреЛрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:

 private EventHandler _myEvent; public event EventHandler MyEvent { add { lock (this) { _myEvent += value; } } remove { lock (this) { _myEvent -= value; } } } 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рд╕реНрдереИрддрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЪрд░ рднреА рд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рджреГрд╢реНрдп рдкреНрд░рдХрд╛рд░ рдкрд░ рд▓реЙрдХ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИtypeof(XXX)рдЬрд╣рд╛рдБ XXX рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рд░ рдШрдЯрдирд╛ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИред C # 2.0 рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рддрд╛рд▓реЗ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЬреБрдбрд╝реА рдПрдХрдорд╛рддреНрд░ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдереИрддрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХрдорд╛рддреНрд░ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВред рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореБрдЭреЗ рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рднреА рдЙрджрд╛рд╣рд░рдг рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рдереАред) рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред рдЬрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧреА рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ ред

рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рджреЗрдЦреЗрдВMyEvent? рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ (рдиреЗрд╕реНрдЯреЗрдб рдкреНрд░рдХрд╛рд░ рд╕рд╣рд┐рдд), рд╕рдВрдХрд▓рдХ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ ( _myEventрдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ)ред рдЕрдиреНрдп рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд╣рдирд╛ рд╣реИ?


рдЕрдм рдЬрдм рд╣рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рд╣рдореЗрдВ рднрд╛рд╖рд╛ рдореЗрдВ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЬрд╡рд╛рдм рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдХрд╛рд░рдг рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреБрдЫ рдХрд╛рд▓реНрдкрдирд┐рдХ C # /ред NET рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд░реНрдЧ рдХреИрд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ? рддреАрди рд╡рд┐рдХрд▓реНрдк:
  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд░ (рдХреНрд╖реЗрддреНрд░) рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдеред
  2. рдПрдХ рдирд┐рдЬреА рдЪрд░ (рдХреНрд╖реЗрддреНрд░) рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рдеред
  3. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд░ AddXXXHandler рдФрд░ RemoveXXXHandler рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдирд┐рдЬреА рдЪрд░ (рдХреНрд╖реЗрддреНрд░)ред

рд╡рд┐рдХрд▓реНрдк рд╕рдВрдЦреНрдпрд╛ 1 рднрдпрд╛рдирдХ рд╣реИ - рд╣рдо рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрддреА рд╣реИ - рд╕рдВрд╕реНрдХрд░рдг тДЦ2 рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб (рдУрд╡рд░рд░рд╛рдЗрдб) рдПрдХ рдПрдХ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ someInstance.MyEvent = eventHandler;, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдореМрдЬреВрджрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдкрд░ eventHandler, рдХреЗ рдмрдЬрд╛рдп рдЬреЛрдбрд╝рдиреЗ рдореМрдЬреВрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП eventHandlerред рд╕рд╛рде рд╣реА, рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рдВрдкрддреНрддрд┐ рдХреЛрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд┐рдХрд▓реНрдк # 3 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреМрди-рд╕реА рдШрдЯрдирд╛рдПрдВ рдЖрдкрдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рд╕рдордЭреМрддреЗ рдХреЗ рд╕рд╛рде (рдЖрдИрдПрд▓ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдФрд░ рдЖрд░рдХреНрд╖рд┐рдд рд╡рд┐рд╢реЗрд╖ рдЭрдВрдбреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди) рдФрд░ "рдореБрдХреНрдд" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЖрдк рдХреНрд╖реЗрддреНрд░ рдЬреИрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдЦреБрд╢ рд╣реИрдВред рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рд╕реВрдЪреА рдХреЛ рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдИрд╡реЗрдВрдЯреНрд╕ рд╕реЗ / рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдФрд░ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдШрдЯрдирд╛рдУрдВ


(рдиреЛрдЯ: C # 4 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЦрдВрдб рдХреБрдЫ рдкреБрд░рд╛рдирд╛ рд╣реИред рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЕрдиреБрднрд╛рдЧ " рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рджреЗрдЦреЗрдВ ")

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд▓реЙрдХрд┐рдВрдЧ (рд▓реЙрдХрд┐рдВрдЧ) рдХреЛ рдЫреБрдЖ рдерд╛ рдЬреЛ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдлрд╝реАрд▓реНрдб-рдЬреИрд╕реА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред ред рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЗрддрдирд╛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реА # 2.0 рдореЗрдВ рднреА, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЖрдкрдХреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдпрд╛ рд╕реНрдерд┐рд░ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдЦреБрдж рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рдЬреА рд▓рд┐рдВрдХ рдкрд░ рддрд╛рд▓рд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЦрдВрдбрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЧрддрд┐рд░реЛрдз рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╡рд┐рдбрдВрдмрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реА рдХреЗ рдареАрдХ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕реА # 2.0 рдореЗрдВ рдЖрдк рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рдХрд┐ рдХрд┐рд╕ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдирд╡реАрдирддрдо рджреЗрдЦ рд╕рдХреЗрдВ ( рдЗрд╕ рдзрд╛рд░рд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ) рдорд╛рдиред рдЖрдк рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдкрд░ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореЗрдореЛрд░реА рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдПрдХ рдЕрдкреНрд░рд┐рдп aftertaste 1 the рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ ред

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЬрдм рдЖрдк рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛рдПрдВ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ рдХреЗ рд╕рдмрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ "рдкреНрд░рдмрд▓рд┐рдд рдХрдВрдХреНрд░реАрдЯ" рдзрд╛рдЧреЗ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдСрдкрд░реЗрд╢рди рдЬреЛрдбрд╝рдиреЗ / рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд╢рд░реАрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг:

 /// <summary> ///    SomeEventHandler,  ┬л┬╗ . /// </summary> SomeEventHandler someEvent; /// <summary> ///       SomeEvent. /// </summary> readonly object someEventLock = new object(); /// <summary> ///   /// </summary> public event SomeEventHandler SomeEvent { add { lock (someEventLock) { someEvent += value; } } remove { lock (someEventLock) { someEvent -= value; } } } /// <summary> ///   SomeEvent /// </summary> protected virtual void OnSomeEvent(EventArgs e) { SomeEventHandler handler; lock (someEventLock) { handler = someEvent; } if (handler != null) { handler (this, e); } } 

рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ "рд▓рд┐рдЦрдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдФрд░ рдлрд┐рд░ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЗрд╕реЗ рд▓реЙрдХ рдХреЗ рдмрд╛рд╣рд░ рдХрд░реЗрдВ : рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рд▓реЙрдХ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЖрд╕рд╛рдиреА рд╕реЗ рдЧрддрд┐рд░реЛрдзред рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдереНрд░реЗрдб рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрджрд┐ рдпрд╣ рдЕрдиреНрдп рдереНрд░реЗрдб рдЖрдкрдХреЗ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдРрдб / рд░рд┐рдореВрд╡рд▓ рдСрдкрд░реЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдбреЗрдбрд▓реЙрдХ рдорд┐рд▓реЗрдЧрд╛ред

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ handlerрдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдореВрд▓реНрдп рдмрджрд▓ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ рднрд▓реЗ рд╣реА рд╡рд╣ рдЦреБрдж рд╣реА рдмрджрд▓ рдЬрд╛рдП someEventред рдпрджрд┐ рд╕рднреА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдИрд╡реЗрдВрдЯ рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд▓ рд▓рд┐рд╕реНрдЯ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧреА, рдпрд╣ someEventрдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ handlerрдЕрдкрдирд╛ рдорд╛рди рд░рдЦреЗрдЧрд╛, рдЬреЛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рдордп рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬреЛ рднреА рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ ( handler = someEvent) рдФрд░ рдПрдХ рдИрд╡реЗрдВрдЯ ( handler (this, e);) рдХреЙрд▓ рдХреЗ рдмреАрдЪ рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдиреНрдп рдереНрд░реЗрдб рд╕реЗ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВ, рддреЛ рдЙрддреНрддрд░ "рдирд╣реАрдВ" рд╣реИ рдмрд╣реБрдд рд╕рд╣реА рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧреАред рдпрджрд┐ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдРрдб / рд░рд┐рдореВрд╡рд▓ рдмреЙрдбреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ; рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, C # рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдСрдЯреЛ-рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп "рдЕрдкрдиреЗ" "рдЧрд▓рдд" рд▓реЙрдХрд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдиреАрдЪреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд┐рдирд╛ред

 /// <summary> ///    SomeEventHandler,  ┬л┬╗ . /// </summary> SomeEventHandler someEvent; /// <summary> ///   /// </summary> public event SomeEventHandler SomeEvent { add { someEvent += value; } remove { someEvent -= value; } } /// <summary> ///   SomeEvent /// </summary> protected virtual void OnSomeEvent(EventArgs e) { if (someEvent != null) { someEvent (this, e); } } 

рдпрджрд┐, рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕рдордп, OnSomeEventрдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЪрд░ someEventрдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдРрдб рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рд╣рдЯрд╛рдП рдЧрдП рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рддреЛ рдЗрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рд╕реБрд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдЖрд╣реНрд╡рд╛рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╢рдХреНрдд рдЬрд╛рдБрдЪ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдПрдХ рдиреЛ-рдСрдк рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдЧрд╛ рдФрд░ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рдореЗрдВ OnSomeEventрдЖрдкрдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕реНрдЯрдм рдмрд╕ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг: рдЕрдиреНрдп рддрд░реАрдХреЗ


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдПрдХ рдХреЙрд▓ рдХреЗ someDelegate(10)рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИ someDelegate.Invoke(10)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Invoke, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рднреА BeginInvoke/ рдЬреЛрдбрд╝реА рдХреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд░рдЦрддреЗ рд╣реИрдВ EndInvokeред рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ, рд╡реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реА # рдореЗрдВ рд╡реЗ рд╣рдореЗрд╢рд╛ рд╕реЗ рд╣реИрдВред рд╡реЗ .NET рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдореЙрдбрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХреЙрд▓рдмреИрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░рд╛рдЬреНрдп рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдереНрд░реЗрдб рдкреВрд▓ рдкреВрд▓ (.NET) рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 2 2 рд╕реЗ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд , рдХреЛрдИ рдХреЙрд▓рдмреИрдХ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдмрд╕ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ BeginInvokeрдФрд░EndInvokeрдПрдХ рдзрд╛рдЧреЗ рдореЗрдВред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдЗрд╕рдореЗрдВ рдРрд╕реЗ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╕реНрдерд┐рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк "рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕" рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдФрд░ рднреА рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣реЛрдЧрд╛ред рд╡рд┐рдзрд┐ EndInvokeрдкреНрд░рддрд┐рдирд┐рдзрд┐ рдорд╛рди рдХреЛ рдЗрдирд╡реЙрдЗрд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЕрдкрд╡рд╛рдж рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ рдФрд░ EndInvokeред

 using System; using System.Threading; delegate int SampleDelegate(string data); class AsyncDelegateExample1 { static void Main() { SampleDelegate counter = new SampleDelegate(CountCharacters); SampleDelegate parser = new SampleDelegate(Parse); IAsyncResult counterResult = counter.BeginInvoke("hello", null, null); IAsyncResult parserResult = parser.BeginInvoke("10", null, null); Console.WriteLine("   ID = {0}  ", Thread.CurrentThread.ManagedThreadId); Console.WriteLine("  '{0}'", counter.EndInvoke(counterResult)); Console.WriteLine("  '{0}'", parser.EndInvoke(parserResult)); Console.WriteLine("   ID = {0} ", Thread.CurrentThread.ManagedThreadId); } static int CountCharacters(string text) { Thread.Sleep(2000); Console.WriteLine("    '{0}'    ID = {1}", text, Thread.CurrentThread.ManagedThreadId); return text.Length; } static int Parse(string text) { Thread.Sleep(100); Console.WriteLine("  '{0}'    ID = {1}", text, Thread.CurrentThread.ManagedThreadId); return int.Parse(text); } } 

рд╡рд┐рдзрд┐ рдХреЙрд▓ Thread.SleepрдХреЗрд╡рд▓ рдЖрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рддрд░реАрдХреЛрдВ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ CountCharactersрдФрд░ Parseрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЦреНрдп рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред CountCharacters2-рд╕реЗрдХрдВрдб рдХреА рдиреАрдВрдж рдереНрд░реЗрдб рдкреВрд▓ рдХреЛ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдереНрд░реЗрдб рдкреВрд▓ рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирдП рдереНрд░реЗрдбреНрд╕ рдХреЗ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдмрдЪрдирд╛ (рдирдП рдереНрд░реЗрдбреНрд╕ рдмрдирд╛рдирд╛ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдСрдкрд░реЗрд╢рди рд╣реИ) ред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреНрд░рд╡рд╛рд╣ рдХреЛ "рд╕реБрд╕реНрдд" рдХрд░рдХреЗ, рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ "рднрд╛рд░реА", рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИ:

	рдЖрдИрдбреА = 9 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдЬрд╛рд░реА рд╣реИ
	рдЖрдИрдбреА = 10 рдХреЗ рд╕рд╛рде рдзрд╛рд░рд╛ рдореЗрдВ '10' рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ
	рдЖрдИрдбреА = 6 рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рд╣реИрд▓реЛ' рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░рдирд╛
	рдХрд╛рдЙрдВрдЯрд░ рдиреЗ '5' рд▓реМрдЯрд╛рдпрд╛
	рдкрд╛рд░реНрд╕рд░ рдиреЗ рд▓реМрдЯрд╛рдпрд╛ '10'
	рдЖрдИрдбреА = 9 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛

рдпрджрд┐ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдереНрд░реЗрдб рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрднреА рддрдХ рдкреВрд░реА рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рддреЛ EndInvokeрдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ Thread.JoinрдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ - рдореБрдЦреНрдп рдереНрд░реЗрдб рддреГрддреАрдп-рдкрдХреНрд╖ рдереНрд░реЗрдб рдореЗрдВ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред IAsyncResultрд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди BeginInvokeрдФрд░ рдЗрдирдкреБрдЯ рдореЗрдВ рдЙрддреНрддреАрд░реНрдг EndInvokeрд╣реЛрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╛рдЬреНрдп BeginInvoke(рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ - Object state) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдРрд╕реЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдХреНрд╕рд░ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдКрдкрд░ рдХрд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓рдмреИрдХ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИ EndInvokeрдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЙрд▓ рдЕрднреА рднреА рдореБрдЦреНрдп рдереНрд░реЗрдб (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ) рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдереНрд░реЗрдб рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛред рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рдзрд┐ рд╕реЗ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛BeginInvokeред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрд┐рдирддреА рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдХреЙрд▓рдмреИрдХ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдореЗрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред stateрдкреНрд░рдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ ObjectрдЙрдкрдпреЛрдЧ рдХрдВрд╕реЛрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣рдо DisplayResultрджреЛрдиреЛрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдиреЛрдЯ IAsyncResultрдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AsyncResult: рдХреЙрд▓рдмреИрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдорд╛рди рд╣рдореЗрд╢рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ AsyncResult, рдФрд░ рдпрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреА рдореВрд▓ рдкреНрд░рддрд┐, рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ EndInvokeред рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ рдХрд┐ AsyncResultрдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИSystem.Runtime.Remoting.Messaging(рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рдЬрдмрдХрд┐ рдЕрдиреНрдп рд╕рднреА рдкреНрд░рдХрд╛рд░ рдореЗрдВ Systemрдпрд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ System.Threadingред

 using System; using System.Threading; using System.Runtime.Remoting.Messaging; delegate int SampleDelegate(string data); class AsyncDelegateExample2 { static void Main() { SampleDelegate counter = new SampleDelegate(CountCharacters); SampleDelegate parser = new SampleDelegate(Parse); AsyncCallback callback = new AsyncCallback(DisplayResult); counter.BeginInvoke("hello", callback, "  '{0}'    ID = {1}"); parser.BeginInvoke("10", callback, "  '{0}'    ID = {1}"); Console.WriteLine("   ID = {0}  ", Thread.CurrentThread.ManagedThreadId); Thread.Sleep(3000); Console.WriteLine("   ID = {0} ", Thread.CurrentThread.ManagedThreadId); } static void DisplayResult(IAsyncResult result) { string format = (string)result.AsyncState; AsyncResult delegateResult = (AsyncResult)result; SampleDelegate delegateInstance = (SampleDelegate)delegateResult.AsyncDelegate; Int32 methodResult = delegateInstance.EndInvoke(result); Console.WriteLine(format, methodResult, Thread.CurrentThread.ManagedThreadId); } static int CountCharacters(string text) { Thread.Sleep(2000); Console.WriteLine("    '{0}'    ID = {1}", text, Thread.CurrentThread.ManagedThreadId); return text.Length; } static int Parse(string text) { Thread.Sleep(100); Console.WriteLine("  '{0}'    ID = {1}", text, Thread.CurrentThread.ManagedThreadId); return int.Parse(text); } } 

рдЗрд╕ рдмрд╛рд░, рд▓рдЧрднрдЧ рд╕рднреА рдХрд╛рдо рдереНрд░реЗрдб рдкреВрд▓ рд╕реЗ рдзрд╛рдЧреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕реВрддреНрд░ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ "рд╕реЛ рдЬрд╛рддрд╛ рд╣реИ"ред рдереНрд░реЗрдб рдкреВрд▓ рд╕реЗ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рд╣реЛрд▓реНрдб" рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд╡реЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рддрд╛рдХрд┐ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡реЗрджрди рд╕рдорд╛рдкреНрдд рди рд╣реЛ, рд╣рдо рдХреЙрд▓ Thread.Sleep(3000)рдХреЛ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ - рдпрд╣ рдЖрд╢рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 3 рд╕реЗрдХрдВрдб рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдЖрдк рд▓рд╛рдЗрди рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Thread.Sleep(3000)- рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдХреНрд░рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЬрдм рдЖрджреЗрд╢ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ EndInvokeред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд╛рдЙрдВрдЯрд░ (2 рд╕реЗрдХрдВрдб) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ (100 рдПрдордПрд╕) рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдкрд╛рд░реНрд╕рд░ред

	рдЖрдИрдбреА = 9 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдЬрд╛рд░реА рд╣реИ
	рдЖрдИрдбреА = 11 рдХреЗ рд╕рд╛рде рдзрд╛рд░рд╛ рдореЗрдВ '10' рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ
	Parser рдиреЗ ID = 11 рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдо рдореЗрдВ '10' рд▓реМрдЯрд╛рдпрд╛
	ID = 10 рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рд╣реИрд▓реЛ' рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░рдирд╛
	рдХрд╛рдЙрдВрдЯрд░ рдиреЗ рдЖрдИрдбреА = 10 рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдо рдореЗрдВ '5' рд▓реМрдЯрд╛рдпрд╛
	рдЖрдИрдбреА = 9 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЗрд╕ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ EndInvoke; рдореЗрдореЛрд░реА рд▓реАрдХ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, EndInvokeрд▓реАрдХ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ , рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрд░реЗ рд▓реЗрдЦ " рдмрд╣реБ рд╕реВрддреНрд░рдг рдореЗрдВ .NET: рдкрд░рд┐рдЪрдп рдФрд░ рд╕реБрдЭрд╛рд╡ " рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, " рдереНрд░реЗрдб рдкреВрд▓ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ " рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИрдВ, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рднрд╛рд╡реА рддрдВрддреНрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд╕рдордп рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдиреЛрдЯ


1. рдиреЛрдЯ рдЯреНрд░рд╛рдВрд╕редрдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЙрди рд╕реНрдХреАрдЯ рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд╣реБрдд рд╣реА рдзреАрдорд╛ рдФрд░ рдЙрдЦрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкреНрд░рдХрд╛рд░ рдкрд░ рд░реЛрдХ рдХреНрдпреЛрдВ рдЦрд░рд╛рдм рд╣реИ, рдФрд░ рдПрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реАрдб-рдУрдирд▓реА рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдЬреЗрдлрд░реА рд░рд┐рдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ "рд╕реАрдПрд▓рдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдПрд▓рдЖрд░" рдкреБрд╕реНрддрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 4 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдмрдЪ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рд╣рдо 2006 рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ 2007 рдореЗрдВ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА "рднрд╛рдЧ 5. рд╕реАрдПрд▓рдЖрд░ рдЯреВрд▓реНрд╕" - "рдЕрдзреНрдпрд╛рдп 24. рд╕реНрдЯреНрд░реАрдо рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди" рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ - рдЕрдиреБрднрд╛рдЧ "рдХреНрдпреЛрдВ" "рдорд╣рд╛рди" рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ред "ред

2. рдиреЛрдЯ рдЯреНрд░рд╛рдВрд╕редрдпрд╣ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдЙрджрд╛рд╣рд░рдг, рд╕рд╛рде рд╣реА рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЖрдЙрдЯрдкреБрдЯ, рдЬреЗред рд╕реНрдХреАрдЯ рд╕реЗ рдореВрд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВрдиреЗ рдереНрд░реЗрдб рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЬреЛрдбрд╝рд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рдХрд┐ рдХрд┐рд╕ рдХреЛрдб рдХреЛ рдХрд┐рд╕ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ


рд▓реЗрдЦ рдХреЗ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреЛрдИ рднреА рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╖рдп рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ, рдЬрдЯрд┐рд▓ рдФрд░ рдмрд╣реБрдореБрдЦреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рд▓реЗрдЦ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдФрд╕рдд рдкреБрд╕реНрддрдХ рдХреЗ рдЖрдХрд╛рд░ рдЬреИрд╕рд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╡рд┐рд╖рдп рдкрд░ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВред

рдПрд▓реЗрдХреНрд╕реА рдбреБрдмреЛрддреНрд╕реЗрд╡ред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдФрд░ рдШрдЯрдирд╛рдПрдБ (RSDN)ред
рдпрджреНрдпрдкрд┐ рдпрд╣ рд▓реЗрдЦ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ (2006 рдХреЛ рджрд┐рдирд╛рдВрдХрд┐рдд) рдФрд░ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдорд╛рдирддрд╛ рд╣реИ, "рдореВрд▓ рдмрд╛рддреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░" рдХрд╛ рд╕реНрддрд░ рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣реИ: рдпрд╣рд╛рдБ рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯрдбреЗрдЧреЗрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдФрд░ рдПрдордПрд╕рдЖрдИрдПрд▓ рд╕реНрддрд░ рдкрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд░реНрдгрди рд╣реИ, рдФрд░ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред EventHandlerList, рдФрд░ рдЕрдзрд┐рдХред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдПрдХ рдЧрд╣рд░реЗ рд╕реНрддрд░ рдкрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓реЗрдЦ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИред

coffeecupwinner ред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдиреЗрдЯ рдХреА рдШрдЯрдирд╛рдУрдВ ред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдереНрд░реЗрдб рд╕реЗрдл рдЗрд╡реЗрдВрдЯ рд╕реЗрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреБрд░рд╛рдиреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдиреЛрдЯ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ред"? рд╕реА # 4 рдореЗрдВ, рд╕реНрдХреАрдЯ рдФрд░ рд░рд┐рдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЧрдИ рдлреАрд▓реНрдб рдЬреИрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЕрдм рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЗрдВрдЯрд░рд▓реЙрдХ рдХрд┐рдП рдЧрдП редCompareExchange рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд╛рд▓реЗ рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓реЗрдЦ рдХреЗрд╡рд▓ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЙрди рд╕реНрдХреАрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЧрд╣рд░реЗ рд╕реНрддрд░ рдкрд░ред

рдбреИрдирд┐рдпрд▓ рдЧреНрд░реБрдирд╡рд▓реНрдбред andreycha ред C # рдореЗрдВ рдХрдордЬреЛрд░ рдИрд╡реЗрдВрдЯ ред
рдЬрдм рдПрдХ рдУрд░ C # /ред NET рдХреЗ рдлрд╛рдпрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рджреВрд╕рд░реА рддрд░рдл C ++, рджреВрд╕рд░реА рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЬреЛ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд░рд╕рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ: рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред

рднрдбрд╝рдХрд╛ рд╣реБрдЖ ред рдореБрдЭреЗ C # рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд░рд┐рдЪрдп рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЧрд▓рддрдлрд╣рдореА рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░рдгреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрд╣ рд▓реЗрдЦ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмреЗрд╣рдж рдЙрдкрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, C # 2nd рдФрд░ 3rd рд╡рд░реНрдЬрди рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдбреЗрд▓реАрдЧреЗрдЯреНрд╕ рдХреЗ рдирдП рдлреАрдЪрд░реНрд╕ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред

Source: https://habr.com/ru/post/In198694/


All Articles