.NET рдХреЗ рд▓рд┐рдП рдПрдВрдмреЗрдбреЗрдб рднрд╛рд╖рд╛, рдпрд╛ рдореИрдВрдиреЗ рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ рдХреЛ рдХреИрд╕реЗ рддрд░реНрдХ рджрд┐рдпрд╛

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЬреБрдиреВрди рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рдЗрддрдиреА рджреГрдврд╝рддрд╛ рд╕реЗ рдмреИрдарддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрдИ рд╕рд╛рд▓реЛрдВ рддрдХ рдмрд╛рд░-рдмрд╛рд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рдЖрдк рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдирдП рдЬреНрдЮрд╛рди рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВ, рдпрд╛ рдмрд╕ рдлрд┐рд░ рд╕реЗ рд╕рднреА рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рдЗрд╕ рддрд░рд╣ рдЬрдм рддрдХ рдХрд┐ рд╕рд╡рд╛рд▓ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рддрдп рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рдореЗрд░реЗ рд▓рд┐рдП, рдлрд┐рдХреНрд╕ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдмрди рдЧрдИ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдкрдХреЛ рдореЗрд░реА рдЖрдБрдЦреЛрдВ рдореЗрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрд╣ рдПрдХ рдЕрддреБрд▓рдиреАрдп рднрдЧреНрди рд╕реМрдВрджрд░реНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдкрдиреНрди рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдерд╛ред



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

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


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

рдмрд╛рдж рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рдерд╛, рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реБрдП, рдФрд░ рдХреНрдпреЛрдВ рд▓реЗрдЦ рдореЗрдВ рдРрд╕реА рдкреАрд▓реА рд╣реЗрдбрд▓рд╛рдЗрди рд╣реИред

рдХрд┐рд╕реЗ рдЪрд╛рд╣рд┐рдП рджреВрд╕рд░реА рдмрд╛рдЗрдХ?


рд▓рдЧрднрдЧ рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╣рдм рдкрд░ рдПрдХ рд╡рд┐рд╖рдп рдореЗрдВ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрднреА рднреА 2500 рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВред рдХреЛрдИ рдФрд░ рдХреНрдпреЛрдВ рдХрд╛рдо рдЖрдПрдЧрд╛? рд╕рдВрднрд╡рддрдГ рдЙрд╕рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рджреВрд╕рд░реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ?

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

public void Run() { var source = "a = 1 + 2"; var a = 0; var compiler = new LensCompiler(); compiler.RegisterProperty("a", () => a, newA => a = newA); try { var fx = compiler.Compile(source); fx(); Console.WriteLine("Success: {0}", a); } catch (LensCompilerException ex) { Console.WriteLine("Error: {0}", ex.FullMessage); } } 

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

рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ


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

рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░

рдореВрд▓ рдкреНрд░рдХрд╛рд░ bool , int , double рдФрд░ string ред рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рд╕реА # рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдШреЛрд╖рдгрд╛

рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ var рдФрд░ let рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдПрдХ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

 let a = 42 var b = "hello world" 

рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛рдУрдВ

рд╢рд░реНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд┐рдЦрд╛ рд╣реИ if рдмреНрд▓реЙрдХ, рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ while рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 var a = 1 while(a < 10) if(a % 2 == 0) print "{0} is even" a else print "oops, {0} is odd" a a = a + 1 

рдирд┐рдпрдВрддреНрд░рдг рдирд┐рд░реНрдорд╛рдг рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ if рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕рд╛рдЗрди рдХреЗ рджрд╛рдИрдВ рдУрд░ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 let description = if(age < 21) "child" else "grown-up" 

рдХрд╛рд░реНрдпреЛрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, print рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЗрд╕рдХреЗ рдмрд╛рдж рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддрд░реНрдХред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рдпрд╛ рдПрдХ рдЪрд░ рдирд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 print "test" print abc print "result is: " (1 + 2) 

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

рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдХреАрд╡рд░реНрдб рдХреА fun рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА fun :

 fun launch of bool max:int name:string -> var x = 0 while(x < max) println "{0}..." x x = x - 1 print "Rocket {0} name is launching!" name let rocket = new Rocket () rocket.Success countdown 10 

LENS рдореЗрдВ рдХреЛрдИ рднреА return рдХреАрд╡рд░реНрдб рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рдЗрд╕рдХреА рдЕрдВрддрд┐рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИ, рддреЛ рдкрд░рд┐рдЪрд┐рдд рд╢рд╛рдмреНрджрд┐рдХ () ред рдХреАрд╡рд░реНрдб break рдФрд░ continue рдирд╣реАрдВ continue ред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдЬрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдпрд╛рджрдЧрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рд╕реЗ рдкрд╣рд▓реЗ pure рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╛рджрдЧрд╛рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ: рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА:

 pure fun add of int x:int y:int -> print "calculating..." x + y add 1 2 // output add 2 3 // output add 2 3 // no output! 

рдХрд╕реНрдЯрдо рд╕рдВрд░рдЪрдирд╛рдПрдВ рдФрд░ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░

record рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 record Point X : int Y : int let zero = new Point () let one = new Point 1 1 

рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХреАрд╡рд░реНрдб рдФрд░ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд▓реЗрдмрд▓ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 type Card Ace King Queen Jack ValueCard of int let king = King let ten = ValueCard 10 print (ten is Card) // true 

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

рдХрдВрдЯреЗрдирд░

рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ new рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 let array = new [1; 2; 3; 4; 5] let list = new [[ "hello"; "world" ]] let tuple = new (13; 42.0; true; "test") let dict = new { "a" => 1; "b" => 2 } 

рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 let a = new [1; 2; 3.3] // double[] let b = new [King; Queen] // Card[] let c = new [1; true; "hello"] // object[] 

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рддрд░реАрдХреЗ

рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдзреНрд╡рдЬ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рдХ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рднреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛:

 let a = Enumerable::Range 1 10 let sum = a.Product () 

LINQ рдереЛрдбрд╝рд╛ рдЪрд╛рд▓рд╛рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ:

 let oddSquareSum = Enumerable::Range 1 100 |> Where ((x:int) -> x % 2 == 0) |> Select ((x:int) -> x ** 2) |> Sum () 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛

рд╕рдВрдХрд▓рдХ рдиреЗ рдХрдИ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рд▓рд╛рдЧреВ рдХреА рд╣реИрдВ:


рддреЛ рдХреНрдпрд╛ Lippert рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ?


рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ рд╕реБрд╕реНрдд рд╣реИрдВ - рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд╛рдЯрдХ рдХрд╣рд╛рдВ рд╣реИ? рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ред

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

рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЪрд▓рд╛рдИ рд╡рд╣ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдереА:

 var intMethods = typeof(int).GetMethods(); //   var myType = ModuleBuilder.DefineType("MyType"); myType.DefineMethod("Test", MethodAttributes.Public); myType.GetMethods(); // NotSupportedException 

рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдирд╛, рдкреЗрди рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╢реНрд░рдорд╕рд╛рдзреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдЧреЗ - рдФрд░ред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рди рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рднреА рд╣реИрдВ рдЬреЛ рдмрдирд╛рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ! рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдкрд░ рдПрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛:

 class A { public List<A> Values = new List<A>(); } 

рдпрд╣ рдПрдХ рджреБрд╖реНрдЪрдХреНрд░ рдмрди рдЬрд╛рддрд╛ рд╣реИ: рдЖрдк рдЯрд╛рдЗрдк List<A> рдХрд╛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ List<A> рдХреЗрд╡рд▓ рдЬрдм рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдВрддрд┐рдо рд░реВрдк рджреЗ рджреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

Stackoverflow рдкрд░ рдореЗрд░рд╛ рдЕрдЧрд▓рд╛ рд╕рд╡рд╛рд▓ рдЬреЙрди рд╕реНрдХреАрдЯ ( рдЧрд╣рд░рд╛рдИ рдореЗрдВ рд╕реА # рдХреЗ рд▓реЗрдЦрдХ) рдФрд░ рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ (рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реА # рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рдиреЗ рддрдХ) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдПрд░рд┐рдХ рдХрд╛ рдлреИрд╕рд▓рд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдФрд░ рдЕрдкреВрд░рдгреАрдп рдерд╛:

Reflection.Emit рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдХрд▓рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдордЬреЛрд░ рд╣реИ ред рдпрд╣ LINQ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рдХреЙрд▓ рд╕рд╛рдЗрдЯреНрд╕ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЯреНрд░реА рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдЬреИрд╕реЗ рдЫреЛрдЯреЗ рдЯреЙрдп рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкрд╛рд░ рдХрд░ рдЬрд╛рдПрдВрдЧреЗред

Reflection.Emit рдЗрд╕ рдкрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдХрд▓рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдордЬреЛрд░ рд╣реИред рдпрд╣ LINQ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рдХреЙрд▓ рдпрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЯреНрд░реА рдмрдирд╛рдиреЗ рдЬреИрд╕реЗ "рдЯреЙрдп" рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреАред

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

рдФрд░ рдРрд╕реА рд╡рд┐рдзрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдереА! рдпрд╣ рднреА рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдерд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдПрдХ рд╣реА TypeBuilder рдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, TypeBuilder рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдерд┐рд░ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдзрд┐, рдХреНрд╖реЗрддреНрд░ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:

 var myType = createType("MyType"); var listType = typeof(List<>); var myList = listType.MakeGenericType(myType); var genericMethod = listType.GetMethod("Add"); var actualMethod = TypeBuilder.GetMethod(myList, genericMethod); 

рдпрд╣рд╛рдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реИ: рд▓реМрдЯреЗ рддрд░реАрдХреЗ рдореЗрдВ рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо List<MyType>.Add(T item) рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓ рд╣реЛрдЧрд╛: рддрд░реНрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ T (рдЬреЗрдиреЗрд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░) рд╣реЛрдЧрд╛, рдЕрдкреЗрдХреНрд╖рд┐рдд MyType ред

рдЗрд╕ рдЦрд╛рдореА рдХреЗ рдЙрдиреНрдореВрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдпреБрдХреНрдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрдзрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рддрд░реНрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред TypeBuilder рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде TypeBuilder рдЗрди рджреЛ рддрдВрддреНрд░реЛрдВ рдиреЗ рджреБрд╖реНрдЪрдХреНрд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╣рд╛рди рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдХрднреА-рдХрднреА рдЧрд▓рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдмрд┐рдВрдм рдкрд░ред рдЖрдк рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрдХрд▓рдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдЖрдкрдХреЛ рднрд╛рдк рд╕реНрдирд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдХреЛрдИ рднреА Reflection.Emit рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИред рддреЛ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ 2009 рдореЗрдВ MSDN рдмреНрд▓реЙрдЧ рд▓реЗрдЦ рдХреЛ рд╡рд╛рдкрд╕ рдкрдврд╝рд╛ рдЬрд╛рдПред рд╡рд░реНрдЧ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рд╡рдзрд╛рдиреА, VB рдкрд░ рдЙрджрд╛рд╣рд░рдг!

рд╕рдВрд╕реНрдорд░рдг рдХреЗ рдЪрдорддреНрдХрд╛рд░


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


рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреЗрдХ рд╢рд╛рдорд┐рд▓ рдереЗ рдФрд░ рд╕рдВрдХрд▓рди рд╕рдордп рдХреЗ рдХрд╛рдлреА рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рд╕рдордп рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ Dictionary<Tuple<Type, Type>, int> рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдХреИрд╢ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред рддреАрди рдкреНрд░рдореБрдЦ рддрд░реАрдХреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП рд▓рдЧрднрдЧ рдЖрдзреЗ рдШрдВрдЯреЗ рд▓рдЧреЗ рдФрд░ рдХрдИ рдЬрдЯрд┐рд▓ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдХреЛ рд▓рдЧрднрдЧ 60 рдЧреБрдирд╛ рдХрдо рдХрд░ рджрд┐рдпрд╛ ред

рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛


рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдЦреНрддреА рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рджреЛ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкрд╛рд░реНрд╕рд░ рдХреЛ F # рд╕реЗ C # рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИред рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП FParsec рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рдХреЛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рдард╣рд░рд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╕рдорд░реНрдерди рдЕрд╕рд╣рдиреАрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ F # рд░рдирдЯрд╛рдЗрдо рдФрд░ 500 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рднреА рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рдбреНрд░рдЧреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓реНрдк рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕рднреА рд╕рдВрдХрд▓рдХ рдХреЛрдб 250 kb рд▓рдЧрддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ - рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдереЛрдбрд╝реЗ рд╕реЗ рдмрджрд▓рд╛рд╡ рд╣рд┐рдорд╕реНрдЦрд▓рди рдЬреИрд╕реА рд▓рд╣рд░ рдХреА рд╡рдЬрд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрди "рдЯреНрд░рд┐рдХреНрд╕" рдореЗрдВ for/foreach , рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдорд╛рдореВрд▓реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд░рд┐рдлрд╛рдЗрдирдореЗрдВрдЯреНрд╕ рдХреЗ рджреМрд░рд╛рди finally рд╕реЗрдХреНрд╢рдиред

рдЕрдиреНрдпрдерд╛, рдХрд╛рдо рдХрд╛ рдореЛрд░реНрдЪрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:


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

рдореИрдВ рдХрд╣рд╛рдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?


рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб github рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ:

github.com/impworks/lens

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рддреАрди рдЯреЗрд╕реНрдЯ рд╣реЛрд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП F # Redistributable рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдкрдиреЗ Visual Studio 2010 рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХрддреНрд░рд┐рдд рдбреЗрдореЛ

рдХрдВрд╕реЛрд▓

рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдореЗрдЬрдмрд╛рдиред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рд▓рд╛рдЗрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ # рд╡рд░реНрдг рдбрд╛рд▓реЗрдВред



рджреНрд░реЛрд╣ рдХрд░рдиреЗрд╡рд╛рд▓рд╛

рдЖрдкрдХреЛ рдлреЙрд░реНрдореВрд▓рд╛ y = f(x) рдореЗрдВ рдЗрд╕рдХреЗ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рджреНрд╡рд┐-рдЖрдпрд╛рдореА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рд░реЗрдВрдЬ рдФрд░ рд╕реНрдЯреЗрдк рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


(рддрд╕реНрд╡реАрд░реЗрдВ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ)

рдЧреНрд░рд╛рдлрд┐рдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕

рд╕рдмрд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЗрдЬрдмрд╛рди рдЖрд╡реЗрджрдиред рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд░реНрдХрд▓ рдФрд░ рд░реЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдИ рдбреЗрдореЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


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

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


All Articles