рдПрдХ рдмрд╛рд░, рдЬрдм рдХрдВрдкреНрдпреВрдЯрд░ рдмрдбрд╝реЗ рдереЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджрд╛рдврд╝реА рд╡рд╛рд▓реЗ рдереЗ, рдФрд░ рдХреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ, рдПрдХ рдореВрд░реНрдЦ рдкреГрдереНрд╡реА рдкрд░ рд░рд╛рдЬреНрдп рдХрд░рддрд╛ рдерд╛ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдиреЗ рдЕрдкрдиреЗ рдбреЙрдЧреНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рд▓рд┐рдЦрд╛ред рдФрд░ рддрдм рдХреЛрдИ рд╣рдардзрд░реНрдорд┐рддрд╛ рдирд╣реАрдВ рдереАред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреЗрд▓рд╛ рдХрд╛рдЙрдмреЙрдп рдЕрдкрдиреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдФрд░ рдХреНрд╖рдорддрд╛ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛; рдХреЛрдб рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХрд▓рд╛ рдХреА рдЕрд╕реАрдорд┐рдд рдкреНрд░рд╢рдВрд╕рд╛ рдХреЗ рдпреЛрдЧреНрдп рдереАред рдпрд╣ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдЗрддрдиреЗ рджреБрд░реНрд▓рдн рдереЗ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рднреА рдХреЛрдб
рдХреЛ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рднреА рдирд╣реАрдВ рдерд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдордп рдмреАрдд рдЧрдпрд╛, рдФрд░ рддрдХрдиреАрдХреА рдкреНрд░рдЧрддрд┐ рдХреА рдПрдХ рдЕрдЬреЗрдп рдорд╢реАрди рдиреЗ рд▓реЛрд╣реЗ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛ рджрд┐рдпрд╛ред рдПрдХ рдареАрдХ рджрд┐рди, рд▓реЛрдЧреЛрдВ рдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╡реЗ рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛! рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдЗрддрдиреА рдмрдврд╝ рдЧрдИ рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдЕрдм рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП: рдЕрдВрддрд┐рдо рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрд┐рдд рдХреЛрдб, рдпрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕реЙрд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдЫрд╛рддреНрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдбред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЛрдбрд╝ рдерд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдмрд╛рд░рд┐рд╢ рдХреЗ рдмрд╛рдж рдорд╢рд░реВрдо рдХреА рддрд░рд╣, рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдФрд░ рддрдХрдиреАрдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреАрдВред
рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИред рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд┐рдХрд▓рд╛: рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдЖрдк рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж OOP рдЙрди рдХреБрдЫ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдирд┐рдпрдореЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рд▓рд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ, рдмрд╕ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдУрдУрдкреА рдХреНрдпрд╛ рд╣реИ (рдЕрд░реНрдерд╛рддреН, рдЗрд╕рдХрд╛ рдПрдХ рдкрд╣рд▓реВ
рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╣реИ )ред
public class Cat { public float CuddlynessFactor { get; private set; } public Cat(float cuddlynessFactor) { this.CuddlynessFactor = cuddlynessFactor; } public void Purr() { Console.WriteLine("Purr!"); } public void HitTheWall() { Console.WriteLine("Fu**ing meow!!!"); } } public class Dog { public float TeethSharpness { get; private set; }; public Dog(float teethSharpness) { this.TeethSharpness = teethSharpness; } public void Bark() { Console.WriteLine("Bark!"); } public void Bite(Human target) { target.Leg.DoDamage(DamageLevel.Substantial); } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рджреЛ рд╕рд░рд▓ рд╡рд░реНрдЧреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ: рдмрд┐рд▓реНрд▓реА рдФрд░ рдХреБрддреНрддрд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ рдФрд░ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреБрдЫ рдЧреБрдг рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред рдпреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг (рд╡рд┐рдзрд┐рдпреЛрдВ) рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЧреБрдг (рдХреНрд╖реЗрддреНрд░) рд╣реИрдВред рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрд╕рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рддрд░реАрдХреЗ рдФрд░ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдРрд╕реЗ рддрд░реАрдХреЗ рдпрд╛ рдЧреБрдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВ, рдХрд┐рд╕ рдХреБрддреНрддреЗ рдХреЛ рд▓рдХрдбрд╝реА рдХреА рдЫрдд рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рддреЗрдЬреА рд▓рд╛рдиреЗ рдФрд░ рдкреВрд░реА рдЧрддрд┐ рд╕реЗ рджреАрд╡рд╛рд░ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдПрдЧрд╛?)ред
рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдЗрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреБрддреНрддреЗ рд╕реЗ рдПрдХ рдмрд┐рд▓реНрд▓реА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рд╕реА рднреА рд╕реВрдЪреАрдмрджреНрдз рд╡рд░реНрдЧреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдХреЗ рджрд╛рд╣рд┐рдиреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХреЛрдИ рдХреБрддреНрддрд╛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд▓реЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
public static class Transmogrificator { public static Cat DogToCat(Dog dog) { return new Cat(Math.Sqrt(dog.TeethSharpness) * 42); } }
рджреЗрдЦрд╛! рдирдИ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдХреБрддреНрддреЗ рдХреЛ рдПрдХ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ!
public void Test() { var uberDog = new Dog(float.Infinity); var testHuman = new Human(); uberDog.Bark(); uberDog.Bite(testHuman); var cat = Transmogrificator.DogToCat(dog); cat.HitTheWall(); }
рдорд┐рдард╛рдИ! рдФрд░ рдЕрдм рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ Microsoft рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ .NET рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рд╣реИ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рд▓рдХреНрд╖реНрдп рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рд┐рдП (рдпрд╛, рдХрдо рд╕реЗ рдХрдо, рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╡рд╛рдИред MSDN:
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рд╢рд╛рдпрдж рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдПрдВрдЧреЗред
[...]
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реЛред рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдПрдХ рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХреЛ рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдХрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
[...]
рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдкреНрд░рдХрд╛рд░ рдЬрд┐рд╕рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЖрдк рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЬреЛрдЦрд┐рдо рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЖрдкрдХреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред
рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рддреЛ рд▓реЗрдЦрдХ рд╣рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЬрдм рдпрд╣
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ ред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо
рдбреЙрдЧрдЯреЛрдХреИрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдмрдирд╛рдХрд░ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
public void Test() { var uberDog = new Dog(float.Infinity); var testHuman = new Human(); uberDog.Bark(); uberDog.Bite(testHuman); var cat = dog.DogToCat(); cat.HitTheWall(); }
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрдпрд╛рдирдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖред рд▓реЗрдХрд┐рди рдирд╣реАрдВ! рдЕрдм, рдХреЛрдб рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп, рдкреВрд░реНрдг рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐
рдбреЙрдЧрдЯреЙрдХ рд╡рд┐рдзрд┐
рдбреЙрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рдЪрд╛рд▓ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ IntelliSense рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рддрддреНрдХрд╛рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ:
- рдУрдУрдкреА рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рдиред рдмрд┐рд▓реНрд▓реА рдмрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдПрдХ рдХреБрддреНрддреЗ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЪреЗрдирд╕реЙ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдбреЙрдХреНрдЯрд░ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдФрд░ рдЦреВрди рд╕реЗ рд╕рдирд╛ рд╣реБрдЖ рдПрдХ рдмрд╛рдЧреЗ рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЯреВрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрднреА рднреА рдПрдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдореЗрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдирдП рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ рдХрд┐ рдбреЙрдЧрдЯреЛрдХреИрдЯ рдкрджреНрдзрддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрддреНрддреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИ! рдмрд╕ рд╣рддрд╛рд╢рд╛ рдХреА рдХрдбрд╝рд╡рд╛рд╣рдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ рд╡рд╣ рдЕрдиреБрднрд╡ рдХрд░реЗрдЧреА рдЬрдм рдЙрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдзреЛрдЦрд╛ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ? рд╢рд╛рдпрдж рдЧрд░реАрдм рд╕рд╛рдереА рдХреЛ рдПрдХ рдордиреЛрдЪрд┐рдХрд┐рддреНрд╕рдХ рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдПрдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╛рдо рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рддрд░реНрдХ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рди рд╣реИрдВред рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдореИрдВ рдЖрдкрдХреЛ R # рдкреНрд░рд╢рдВрд╕рдХ рд╕реБрдирддрд╛ рд╣реВрдВред рдореИрдВ рдЦреБрдж рдЗрд╕ рдЙрдкрдХрд░рдг рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд╡реЗрджрдирд╛рд╣рд╛рд░реА рд╣реИ рдЬреЛ рдЧреИрдВрдЧреНрд░реАрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдкреИрд░ рдореЗрдВ рджрд░реНрдж рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдХреЗрдЬ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯрддрд╛ рд╣рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдорди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕реБрдирдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЦреБрдж рдХреЛ рдореЛрд░реНрдлрд┐рди рдХреА рдПрдХ рдФрд░ рдЦреБрд░рд╛рдХ рдХреЗ рд╕рд╛рде рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдирд┐рдпрдорд┐рдд рд╕реНрдереИрддрд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рд╣рдЬрд╛рд░ рдФрд░ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рднреА рд░реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ: тАЬрд▓реЛрдЧ! рдЗрд╕ рдкрд░ рд╕реЛрдЪреЛ! рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЧрдбрд╝рдмрдбрд╝реА рдХреЗ рдЕрдВрдзреЗрд░реЗ рд╕рдордп рдкрд░ рд▓реМрдЯ рд░рд╣реЗ рд╣реИрдВ! рдЖрдк gognokod рдореЗрдВ mired рд╣реИрдВ! рдкрд╢реНрдЪрд╛рддрд╛рдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдкреА! рд╕реНрдЯреНрд░реИрд╕рдкреБрдк, рд░рд┐рдХреНрдЯрд░ рдФрд░ рдореИрдХрдХреЛрдиреЗрд▓ рдХреЗ рдирд╛рдо рдкрд░! "
UPD : рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкреЗрдбрд╝ рдкрд░ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдлреИрд▓ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдХрд╛ рд╕рд╛рд░ рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛ рдпрд╣ рд╣реИ: рдореИрдВ рдЖрдкрд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ
рдХрд┐ рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╕рдВрдХрд▓рд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рд╕реНрд░реЛрдд рддрдХ рдЖрдкрдХреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред LINQ рдЬреИрд╕реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рдЯрдХрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИред