据扯,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));

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

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的全部新特性不止这么多,限于篇幅,就整理这些,若想了解更多,请参考下面的链接。

参考资料:

http://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Status&referringTitle=Documentation

http://en.wikipedia.org/wiki/.NET_Framework_version_history

http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated

http://www.kunal-chowdhury.com/2012/07/evolution-of-c-10-50-what-are-new.html

http://www.cnblogs.com/TianFang/p/3647144.html

本文基于署名 GPL 许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名lhking(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。
 
转载自:http://www.cnblogs.com/lhking/p/3660182.html

转载——C# 6.0可能的新特性及C#发展历程的更多相关文章

  1. C# 6.0可能的新特性及C#发展历程[转]

      C# 6.0可能的新特性及C#发展历程[转] 年10月份发布了,对应的是.Net Franework 4.5.1. 或者3年,更新增加的东西会比较多,所以对于C# 6.0,还是有一些期待的. 下面 ...

  2. C# 6.0可能的新特性及C#发展历程

    据扯,C# 6.0在不远的将来就发布了,对应的IDE可能是VS 2014(.Net Framework 5.0),因为VS 2013已于2013年10月份发布了,对应的是.Net Franework ...

  3. c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】

    引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...

  4. C# 6.0可能的新特性

    C# 6.0可能的新特性 1.主构造函数(Primary Constructors) 主构造函数给类中的变量赋值 Before public class Point { private int x, ...

  5. Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结

    Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...

  6. 有史来最大改变 Android 5.0十大新特性

    有史来最大改变 Android 5.0十大新特性 2014.10.16 14:51:31 来源:腾讯数码作者:腾讯数码 ( 0 条评论 )   距离Android系统上一次重大更新不到一年的时间,谷歌 ...

  7. Spring Boot 2.0正式发布,新特性解读

    作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...

  8. MySQL 8.0.2复制新特性(翻译)

    译者:知数堂星耀队 MySQL 8.0.2复制新特性 MySQL 8 正在变得原来越好,而且这也在我们MySQL复制研发团队引起了一阵热潮.我们一直致力于全面提升MySQL复制,通过引入新的和一些有趣 ...

  9. 【HANA系列】SAP HANA 1.0 SPS 11 新特性

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 1.0 SPS ...

随机推荐

  1. 【树状数组】CF961E Tufurama

    挺巧妙的数据结构题(不过据说这是一种套路? E. Tufurama One day Polycarp decided to rewatch his absolute favourite episode ...

  2. Windows下安装配置SQLite和使用的教程

    什么是SQLite SQLite是一款非常轻量级的关系数据库系统,支持多数SQL92标准.SQLite在使用前不需要安装设置,不需要进程来启动.停止或配置,而其他大多数SQL数据库引擎是作为一个单独的 ...

  3. B1051 复数乘法(15 分)

    [PAT]B1051 复数乘法(15 分) - 路明天 - 博客园 https://www.cnblogs.com/hebust/p/9496809.html 在此对四舍五入输出结果做总结. 对于do ...

  4. C语言中可变参数的使用

    在C语言程序编写中我们使用最多的函数一定包括printf以及很多类似的变形体.这个函数包含在C库函数中,定义为 int printf( const char* format, ...); 除了一个格式 ...

  5. 笔记-算法-hash以及hashlib使用

    算法-hash和hash表以及hashlib使用 1.      简介 1.1.    hash Hash(散列/哈希),就是把任意长度的输入(预映射pre-image)通过散列算法变换成固定长度的输 ...

  6. python中迷茫的编码问题

    1.理清一些知识点: python默认的编码格式: ASCII(py2) unicode(py3) 查看默认编码:sys.defaultencoding 修改默认编码:#coding = utf-8 ...

  7. FreeMarker的<#if></#if>标签

    <#if target??> xxxx </#if> 上面这段代码判断target??是否为null,如果不为null时才可以执行if里面的内容,为null时则不进到 if里面 ...

  8. Go语言之并发编程(四)

    同步 Go 程序可以使用通道进行多个 goroutine 间的数据交换,但这仅仅是数据同步中的一种方法.通道内部的实现依然使用了各种锁,因此优雅代码的代价是性能.在某些轻量级的场合,原子访问(atom ...

  9. opencv中的仿射变换

    什么是仿射变换? 原理:1.一个任意的仿射变换都能表示为 乘以一个矩阵(线性变换) 接着再 加上一个向量(平移) 2.综上所述,我们能够用仿射变换来表示: 1)旋转(线性变换) 2)平移(向量加) 3 ...

  10. Python学习-day14-CSS

    前端二:CSS   CSS: 一:介绍:学名层叠样式表(Cading Style Sheets)是一种用来表现HTML或者XML等文件的样式的计算机语言.让HTML和XML看起来更加美观. 语法:&l ...