рднрд╡рд┐рд╖реНрдп c #

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓рдВрджрди рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд NDC 2013 рдХреЗ рд╕рдореНрдореЗрд▓рди рдореЗрдВ, C # рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ, рдореИрдбреНрд╕ рдЯреЙрд░реНрдЧреЗрд░реНрд╕рди рдиреЗ рдЕрдкрдиреА рдмрд╛рддрдЪреАрдд "рдж рдлреНрдпреВрдЪрд░ рдСрдлрд╝ рд╕реА #" рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред

рдкреНрд░рд╛рдердорд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░

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

//  public class Point { private int x, y; public Point(int x, int y) { this.x = x; this.y = y; } } //  public class Point(int x, int y) { } 

рдкрдврд╝реЗрдВ- рдХреЗрд╡рд▓ рдЧреБрдг

рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдирд┐рдЬреА рд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
 public int X { get; private set;} 

рдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреЗрддреЛрдВ рдореЗрдВ
 private readonly int x; public int X { get { return x; } } 

рдЖрдк рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
 public int X { get; } = 42; 

рдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдерд┐рд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрдм рди рдХреЗрд╡рд▓ рдирд╛рдо рд╕реНрдерд╛рди, рдмрд▓реНрдХрд┐ рд╕реНрдерд┐рд░ рдХрдХреНрд╖рд╛рдПрдВ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХреЗ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
 using System.Math; ... public double A { get { return Sqrt(Round(5.142)); } } 

рд╕рдВрдкрддреНрддрд┐ рдХреЗ рднрд╛рд╡

рдШреЛрд╖рд┐рдд рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЧреБрдгред
 public double Distance => Math.Sqrt((X * X) + (Y * Y)); 

рд╡рд┐рдзрд┐ рдХреЗ рднрд╛рд╡

рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдПред
 public Point Move(int dx, int dy) => new Point(X + dx, Y + dy); 

IEnumerable рдХреЗ рд╕рд╛рде рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдорд╛рдирдХреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рд╕реЗ IEnumerable рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдпрджрд┐ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓рдирд╛ рдерд╛
 Do(someEnum.ToArray()); ... public void Do(params int[] values) { ... } 

рдЕрдм рдЖрдк рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
 Do(someEnum); public void Do(params IEnumerable<Point> points) { ... } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ IEnumerable рдХреЛ рдкреИрд░рд╛рдорд╕ рдХреАрд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реБрд░рдХреНрд╖рд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди рдСрдкрд░реЗрдЯрд░

рдСрдкрд░реЗрдЯрд░? рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд▓ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЧреНрд░реВрд╡реА рд╕реЗ рд╕рдорд╛рди рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 var bestValue = points?.FirstOrDefault()?.X ?? -1; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдСрдкрд░реЗрдЯрд░ рдЙрд╕ рдХреЛрдб рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
 if (points != null) { var next = points.FirstOrDefault(); if (next != null && next.X != null) return next.X; } return -1; 

рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рдиред

рдЬреЗрдиреЗрд░рд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реА # рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, var x = MyClass.Create <int> (24) рдХреЗ рдмрдЬрд╛рдп, рд╣рдо var x = MyClass.Create (24) рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рддрдХрдиреАрдХ рдЬреЗрдиреЗрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдерд╛ рдЬреЛ рдПрдХ рд╡рд░реНрдЧ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
 var x = MyClass.Create(1, "X"); ... public MyClass<T1, T2> Create<T1, T2>(T1 a, T2 b) { return new MyClass<T1, T2>(a, b); } 

рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
 var x = new MyClass(1, "X"); 

рдХрд╣рд╛ рд╡рд┐рдзрд┐ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдШреЛрд╖рдгрд╛

рд╢рд╛рдпрдж рдпрд╣ рдмрджрд▓рд╛рд╡ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред

 // int x; int.TryParse("123", out x); // int.TryParse("123", out int x); 


рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:
damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated
ndclondon.oktaset.com/t-11783
adamralph.com/2013/12/06/ndc-diary-day-3/#more
wesnerm.blogs.com/net_undocumented/2013/12/mads-on-c-60.html

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


All Articles