рдкрд┐рдЫрд▓реЗ рд╕реЛрдорд╡рд╛рд░, рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ рдХрд┐ рдПрдХ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдХрдВрдкрдиреА рдореЗрдВ рд╡рд░рд┐рд╖реНрдаред рдиреЗрдЯ рдбреЗрд╡рд▓рдкрд░ рдкрд░ рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛, рдЬрд╣рд╛рдБ рдХрдИ рдкреНрд░рд╢реНрди .Net рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдПрдХ рдкреНрд░рд╢реНрди рдореЗрдВ рдХрдИ рдХрдердиреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди (рд╕рддреНрдп / рдЕрд╕рддреНрдп) рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬрд┐рдирдореЗрдВ рдирд┐рдореНрди рдереЗ:
.Net рдореЗрдВ, рддрддреНрд╡реЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рд░рдгреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП int [], рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ IList рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдлрд╝реЙрд░рдЪ рдХрдерди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдФрд░ рдЕрд▓рдЧ рд╕реЗ рд╣рд╛рд╢рд┐рдпреЗ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ред рдЙрд╕ рдлреЙрд░реНрдЪреНрдпреВрдирд░ рдХреЛ рдЖрдИрд▓рд┐рд╕реНрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди IEnumerable рдХреА, рдореИрдВ рдЕрдЧрд▓реЗ рдкреНрд░рд╢реНрди рдкрд░ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдШрд░ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░, рдореБрдЭреЗ рдЗрд╕ рд╕рд╡рд╛рд▓ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдХреНрдпрд╛ рд╕рд░рдгреА рдЕрднреА рднреА рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ?
IList рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдиреЗ рдореБрдЭреЗ рдПрдХ IEnumerable, рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛, рдФрд░ рдПрдХ рдЧрдгрдирд╛ рдЧреБрдг рджрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдереА, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдгреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ, рдЬреИрд╕реЗ рдХрд┐ IsFixedChlection ()ред рд╕рд░рдгреА рдореЗрдВ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╛рдИ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдФрд░ IEnumerable рдореЗрдВ рдЧрдгрдирд╛ LINQ рд╕реЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рд░рдгреА IList рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рднрд╛рд╡рдирд╛ рдиреЗ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рдмрд╛рдж рд╢рд╛рдо рдореЗрдВ, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХрдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА
рдЪреВрдБрдХрд┐ Reflector.Net рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП C # рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛ рдХрд┐ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╕рд░рдгреА рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
var v = new int[] { 1, 2, 3 }; var t = v.GetType(); var i = t.GetInterfaces(); foreach(var tp in i) Console.WriteLine(tp.Name);
рдпрд╣рд╛рдБ рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдкреВрд░реА рд╕реВрдЪреА рд╣реИ:
ICloneable IList ICollection IEnumerable IStructuralComparable IStructuralEquatable IList`1 ICollection`1 IEnumerable`1 IReadOnlyList`1 IReadOnlyCollection`1
рдЗрд╕ рдкреНрд░рдХрд╛рд░,
.Net рдореЗрдВ рдПрдХ
рд╕рд░рдгреА рдЕрднреА рднреА IList рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЗрд╕рдХреЗ ILI <рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ ред
рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ System.Array рдХреНрд▓рд╛рд╕ рдХрд╛ рдЖрд░реЗрдЦ рдмрдирд╛рдпрд╛ред

рдореЗрд░реА рдЧрд▓рддреА рдиреЗ рдореБрдЭреЗ рддреБрд░рдВрдд рдорд╛рд░ рджрд┐рдпрд╛: рдЧрдгрдирд╛ IList рдХреА рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди ICollection, рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХ рдФрд░ рдкрд┐рдЫрд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рд░рдгреА рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдереА, рдЬреЛ IList рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрдИ рдЕрдиреНрдп рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдереА, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдиреНрдп рдЧреБрдгреЛрдВ, IsFixedSize рдФрд░ IsReadOnly рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдХреИрд╕реЗ рднреА рд╕рдВрднрд╡ рд╣реИ?
рдЬрдм рдЖрдк рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ C # рдореЗрдВ рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рди рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗред рдореБрдЭреЗ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рд╕реЗ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ред рдЬрдм рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдореМрдХрд╛ рдореИрдВрдиреЗ ReSharper рдореЗрдВ рднреА рджреЗрдЦрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдЬ рддрдХ, рдореБрдЭреЗ рд╕реАрдзреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛
рдЪрд▓реЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЗрди рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:ред
рдорд╛рдкрджрдВрдб
| рдирд┐рд╖реНрдкреНрд░рд╛рдг рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди
| рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
|
---|
рдореВрд▓ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛
| interface ITest { void DoTest(); } public class ImplicitTest : ITest { public void DoTest() { } }
| interface ITest { void DoTest(); } public class ExplicitTest : ITest { void ITest.DoTest() { } }
|
рджреГрд╢реНрдпрддрд╛
| рд▓рд╛рдЧреВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдореЗрд╢рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
var imp = new ImplicitTest(); imp.DoTest();
| рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдореЗрд╢рд╛ рдмрдВрдж (рдирд┐рдЬреА) рд╣реЛрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдЕрдкрдХрд╛рд╕реНрдЯ) рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред
var exp = new ExplicitTest(); ((ITest)exp).DoTest();
|
polymorph
| рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрднрд╛рд╕реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рдВрд╢рдЬреЛрдВ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
| рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдореЗрд╢рд╛ рд╕реНрдерд┐рд░ рд╣реЛрддрд╛ рд╣реИред рдирдП рд╡рдВрд╢рдЬреЛрдВ рдореЗрдВ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓рдЧрднрдЧред 1
|
рд╕рд╛рд░ рд╡рд░реНрдЧ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
| рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдореВрд░реНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╡рдВрд╢рдЬ рд╡рд░реНрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
| рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдореВрд░реНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ рдЕрдиреНрдп рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдЕрдореВрд░реНрдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд▓рдЧрднрдЧред 2
|
рдЯрд┐рдкреНрдкрдгреА:
рд▓рдЧрднрдЧред 1 - рдЬреИрд╕рд╛ рдХрд┐
рдорд╣рд╛рдкреМрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рдВрд╢рдЬ рд╡рд░реНрдЧ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рд░-рдмрд╛рд░ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓реЗрдЦ рдкрд░ рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ)ред
рд▓рдЧрднрдЧред 2 -
рдмреНрд▓реЙрдЧ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рд╡рд░реНрдЧ рд╣реА рд╕рд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕рдЪ рдерд╛, рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рд╣рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
MSDN рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрдм рдПрдХ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрдо рддреМрд░ рдкрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЪрд┐рд▓рд┐рдВрдЧ рдирд╛рдо
"рдореМрдд рдХреЗ рдШрд╛рддрдХ рд╣реАрд░реЗ" рдХреЗ рддрд╣рдд рдЬрд╛рдиреА
рдЬрд╛рддреА рд╣реИ , рдЬреЛ рд░реВрд╕реА рдореЗрдВ
"рд╣реАрд░реЗ рдХреА рд╕рдорд╕реНрдпрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рддрдмреНрджреАрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
interface IJogger { void Run(); } interface ISkier { void Run(); } public class Athlete: ISkier, IJogger { public void Run() { Console.WriteLine("Am I an Athlete, Skier or Jogger?"); } }
рд╡реИрд╕реЗ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг C # рдореЗрдВ рд╕рд╣реА рдХреЛрдб рд╣реИ, рдЕрд░реНрдерд╛рдд, рдпрд╣ (рд╕рд╣реА рдврдВрдЧ рд╕реЗ) рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░рди () рд╡рд┐рдзрд┐ рджреЛрдиреЛрдВ рд╣реА рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдирд┐рдореНрди рдХреЛрдб рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var sp = new Athlete(); sp.Run(); (sp as ISkier).Run(); (sp as IJogger).Run();
рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреАрди рдмрд╛рд░ рд╕рд╛рдВрддреНрд╡рдирд╛ рдореЗрдВ
рдкреНрд░рджрд░реНрд╢рд┐рдд "рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдПрдерд▓реАрдЯ, рд╕реНрдХреАрдпрд░ рдпрд╛ рдЬреЙрдЧрд░?" рд╣реЛрдЧрд╛ ред
рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рддреАрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
public class Sportsman { public virtual void Run() { Console.WriteLine("I am a Sportsman"); } } public class Athlete: Sportsman, ISkier, IJogger { public override void Run() { Console.WriteLine("I am an Athlete"); } void ISkier.Run() { Console.WriteLine("I am a Skier"); } void IJogger.Run() { Console.WriteLine("I am a Jogger"); } }
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рдХреЛрдб 2 рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреАрди рд▓рд╛рдЗрдиреЗрдВ рджреЗрдЦреЗрдВрдЧреЗ,
"рдореИрдВ рдПрдХ рдПрдерд▓реАрдЯ рд╣реВрдВ " ,
"рдореИрдВ рдПрдХ рд╕реНрдХреАрдпрд░ рд╣реВрдВ " рдФрд░
"рдореИрдВ рдПрдХ рдЬреЙрдЧрд░ рд╣реВрдВ" ред
рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреГрд╢реНрдпрддрд╛ рдФрд░ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ (рдпрджрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдкреВрд░реНрд╡рдЬ рд╡рд░реНрдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╡рд┐рдзрд┐ рд╡рдВрд╢ рдореЗрдВ рдЫрд┐рдкреА рд╣реЛрдЧреА рдФрд░ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ c рд╕рдВрдХрд▓рдХ рд╡рд┐рдзрд┐ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреАред)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдЪрдпрдирд╛рддреНрдордХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рджреЛрдиреЛрдВ рд╕рдВрднрд╡ рд╣реИ:
public class Code { public void Run() { Console.WriteLine("I am a class method"); } } interface ICommand { void Run(); void Execute(); } public class CodeCommand : Code, ICommand {
рдпрд╣ рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯреЗрд▓реАрд╕рд┐рдПрдВрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреЛ рдирд┐рдЬреА рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рджреВрд╕рд░реА рдУрд░, рддрд░реАрдХреЛрдВ рдХреЗ рдирд┐рдЬреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред .Net рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░рдгреА рдЫрд┐рдкрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ICollection рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЧрдгрдирд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдирд╛рдо рд▓рдВрдмрд╛рдИ рдХреЗ рддрд╣рдд рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ (рдпрд╣ рд╕рдВрднрд╡рддрдГ C ++ STL рдФрд░ Java рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ (= рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рддреЗ рд╣реИрдВ)ред
рдпрд╣рд╛рдБ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХрд┐ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ "рдирд┐рд╣рд┐рдд" рджреНрд╡рд╛рд░рд╛ рдХреМрди рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯреЗрд▓реАрдЬреЗрдВрд╕реА рдореЗрдВ рди рддреЛ рддрд░реАрдХреЗ рдФрд░ рди рд╣реА рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЧреБрдг рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП System.Aray рдпрд╣рд╛рдВ рднреА рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ
рдЪреВрдБрдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ (рдкрдмреНрд▓рд┐рдХ) рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдореЗрдердб рдХреЗ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд░рд┐рдлрд╝реНрд▓реЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрдмреНрд▓рд┐рдХ рдореЗрдердб рд╣рдЯрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд░рди) () рдФрд░ рдПрдХреНрд╕рд┐рдХреНрдпреВрдЯ () рдореЗрдердбреНрд╕ рдХреЛ рдЙрдкрд░реЛрдХреНрдд ICommand рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдПрдХ рд░рди ( )) рд╕рднреА рдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдореЗрдВ, рдПрдХ рдЦреБрд▓реА рдкрд╣реБрдВрдЪ рд╡рд┐рдзрд┐ рдмрдиреА рд░рд╣реЗрдЧреА, рдЬреЛ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рднреА рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрдд "рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ" рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реНрд╡ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ (рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ, рд╕рдВрднрд╡рддрдГ рдЕрд▓рдЧ-рдЕрд▓рдЧ) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╣реЛрдВрдЧреАред
interface IFingers { void Thumb(); void IndexFinger();
рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдПрдХ рдирд┐рдЬреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдзрд┐рдХ рдЧреИрд░-рдореМрдЬреВрдж рдкрджреНрдзрддрд┐ рдХреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рднреА рдХрдХреНрд╖рд╛рдПрдВ рдмрд╕ рд╕рдВрдХрд▓рди рдмрдВрдж рдХрд░ рджреЗрдВрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдЗрд╕реЗ рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмреЗрдЪрдирд╛), рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдЕрддрд┐рд░рд┐рдХреНрдд" рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬреЛ рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╕рд┐рджреНрдзрд╛рдВрдд "рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ" рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЧреБрдг (рдЧреБрдг) рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯрд░реНрдирд▓реА рдФрд░ рд╕реАрдзреЗ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╣реА рдПрдХреНрд╕реЗрд╕рд░ рдореЗрдердбреНрд╕ (рдЧреЗрдЯреНрдЯрд░ рдФрд░ рд╕реЗрдЯрд░) рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЗрдлреЗрдХреНрдЯреНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╡реЗрд▓рд┐рдбреЗрд╢рди) рдЧреБрдг)ред
interface IProperty { int Amount { get; set; } } public class ClassWithProperty : IProperty {
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЧреБрдгреЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдпреЗ рдЧреБрдг рдирд┐рдЬреА рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ "рд▓рдВрдмрд╛" рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд░рдВрдн рд╣реЛрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рдХреНрд▓реАрдирд░ рдХреЛрдб рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдФрд░ рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C # рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдШреЛрд╖рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдУрд░, рд╣рдо рдХреЛрдб рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ReSharper рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реЛ рддреЛ var рдХреЗ рд╕рд╛рде рдПрдХ рдШреЛрд╖рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕реЗ рдЬреБрдбрд╝реА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рддрд╛ рд╣реИред рдХреЛрдбред рдпрд╣ рдмрд┐рдВрджреБ рдмрд╣реБрдд рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдХрдИ рд▓реЛрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд▓рд╛рдЧрдд рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрддреНрд░рд▓реЗрдЦ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ, рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмреНрд▓реЙрдЧреЛрдВ рд╕реЗ (
[1] ,
[2] ,
[3] рдФрд░
[4] ), рд╕рд╛рде рд╣реА рд╕реНрдЯреИрдХрдСрд╡рд░рдлрд╝реНрд▓реЛ рд╕реЗ
[5] рдФрд░
[6] рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдПрдХ
рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ ред рдХреЛрдбрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдЕрдзреНрдпрд╛рдп 13.5 рдЬреЗрдлрд░реА рд░рд┐рдХреНрдЯрд░ рдХреЗ "
рд╕реАрдПрд▓рдЖрд░ рд╡рд┐рдж рд╕реА # "ред
рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмреЛрдирд╕: рдмреИрдХрдлрд┐рд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рд╢реНрди (рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдХреЗ рд▓рд┐рдП)рдпреЗ рдкреНрд░рд╢реНрди рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╡реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
1. рдпрджрд┐ рд╕реВрдЪреА 2 рдореЗрдВ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ
(sp as Sportsman).Run();
рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
2. рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3 рдореЗрдВ рдиреНрдпреВрдирддрдо рдмрджрд▓рд╛рд╡ (рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдХреАрд╡рд░реНрдб рдХреА рдЬрдЧрд╣) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдВрд╕реЛрд▓ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдореЗрдВ
рдореИрдВ "рдореИрдВ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реВрдВ" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛
рд╣реВрдВ ?