打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#6.0的新特性及C#发展历程


        据扯,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是根据一些博客整理的,如有错误,随时改正。

C# 6.0可能的新特性

1、主构造函数(Primary Constructors)

  主构造函数给类中的变量赋值

Before

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

 After

public class Point(int x, int y) {    private int x, y;}

2、自动属性赋值(Auto Properties)

Before

  class Point    {        public int X { get; private set; }        public int Y { get; private set; }        public Point()        {            this.X = 100;            this.Y = 100;        }    } 

After

  class Point    {        public int X { get; private set; } = 100;        public int Y { get; private set; } = 100;    } 

3、using静态类(Static type using statements;)

using会把引用类的所有静态方法导入到当前命名空间

Before

public double A { get { return Math.Sqrt(Math.Round(5.142)); } }

After

using System.Math;...public double A { get { return Sqrt(Round(5.142)); } }

4、Property Expressions

Before

public double Distance {    get { return Math.Sqrt((X * X) + (Y * Y)); }}

After

public double Distance => Math.Sqrt((X * X) + (Y * Y));

 初看起来像Lambda表达式,其实和Lambda无关系。

5. Method Expressions

Before

public Point Move(int dx, int dy) {    return new Point(X + dx1, Y + dy1);}

After

public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);

这个和Property Expressions类似

6、Params for enumerables

Before

Do(someEnum.ToArray());...public void Do(params int[] values) { ... }

After

Do(someEnum);public void Do(params IEnumerable<Point> points) { ... }

 以前params是只可以修饰array类型的参数,现在多了一些类型

7、Monadic null checking(null检查运算符)

Before

if (points != null) {    var next = points.FirstOrDefault();    if (next != null && next.X != null) return next.X;}   return -1;

After

var bestValue = points?.FirstOrDefault()?.X ?? -1;

这个少了好几行代码,赞啊 

8、Constructor type parameter inference

Before

var x = MyClass.Create(1, "X");...public MyClass<T1, T2> Create<T1, T2>(T1 a, T2 b) {    return new MyClass<T1, T2>(a, b);}

After

var x = new MyClass(1, "X");

9、 Inline declarations for out params(内联out参数定义)

Before

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

After

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

说实话,这个很常用。

 

当然,C# 6.0的全部新特性不止这么多,限于篇幅,就整理这些,若想了解更多,请参考下面的链接。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Mock Exam II
C# 中 Struct 与 Class 的区别,以及两者的适用场合
使用反射调用方法:
android之壁纸机制
dbutils通用类,dbutils分页查询
通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等) 前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服