据扯,C# 6.0在不远的将来就发布了,对应的IDE可能是VS 2014(.Net Framework 5.0),因为VS 2013已于2013年10月份发布了,对应的是.Net Franework 4.5.1。
从Visual Studio的更新规律上来看,微软2或者3年,更新增加的东西会比较多,所以对于C# 6.0,还是有一些期待的。
下面这张图列出了C#每次重要更新的时间及增加的新特性,对于了解C#这些年的发展历程,对C#的认识更加全面,是有帮助的。其中图的最后一行C#6.0是根据一些博客整理的,如有错误,随时改正。
1、主构造函数(Primary Constructors)
主构造函数给类中的变量赋值
Before
public class Point(int x, int y) { private int x, y;}
2、自动属性赋值(Auto Properties)
class Point { public int X { get; private set; } public int Y { get; private set; } public Point() { this.X = 100; this.Y = 100; } }
class Point { public int X { get; private set; } = 100; public int Y { get; private set; } = 100; }
using会把引用类的所有静态方法导入到当前命名空间
public double A { get { return Math.Sqrt(Math.Round(5.142)); } }
using System.Math;...public double A { get { return Sqrt(Round(5.142)); } }
public double Distance { get { return Math.Sqrt((X * X) + (Y * Y)); }}
public double Distance => Math.Sqrt((X * X) + (Y * Y));
初看起来像Lambda表达式,其实和Lambda无关系。
public Point Move(int dx, int dy) { return new Point(X + dx1, Y + dy1);}
public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);
这个和Property Expressions类似
Do(someEnum.ToArray());...public void Do(params int[] values) { ... }
Do(someEnum);public void Do(params IEnumerable<Point> points) { ... }
以前params是只可以修饰array类型的参数,现在多了一些类型
if (points != null) { var next = points.FirstOrDefault(); if (next != null && next.X != null) return next.X;} return -1;
var bestValue = points?.FirstOrDefault()?.X ?? -1;
这个少了好几行代码,赞啊
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);
说实话,这个很常用。
当然,C# 6.0的全部新特性不止这么多,限于篇幅,就整理这些,若想了解更多,请参考下面的链接。
联系客服