博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载——C# 6.0可能的新特性及C#发展历程
阅读量:5995 次
发布时间:2019-06-20

本文共 2530 字,大约阅读时间需要 8 分钟。

        据扯,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
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
Create
(T1 a, T2 b) { return new MyClass
(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的全部新特性不止这么多,限于篇幅,就整理这些,若想了解更多,请参考下面的链接。

参考资料:

本文基于署名 GPL 许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 (包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。
 
转载自:http://www.cnblogs.com/lhking/p/3660182.html
你可能感兴趣的文章
Cobar是提供关系型数据库(MySQL)分布式服务的中间件
查看>>
Oracle当前用户SQL
查看>>
JavaScript学习笔记之下拉选择框的操作
查看>>
ProgressDialog使用总结
查看>>
安装完操作系统后,必备开发软件安装
查看>>
网络爬虫基本原理(一)
查看>>
让Win8自动登录免输入密码的小技巧
查看>>
RSA3:预提取数据
查看>>
MinGW 介绍
查看>>
注册域名到搜索引擎
查看>>
Eclipse中如何安装和使用GrepCode插件 (转)
查看>>
神经网络和机器学习、强人工智能
查看>>
JavaScript内部原理实践——真的懂JavaScript吗?(转)
查看>>
【DeepLearning】Exercise:Softmax Regression
查看>>
Android JNI入门第四篇——Android.mk文件分析
查看>>
Get a developer license for windows store app
查看>>
策略模式
查看>>
Android Studio导入第三方类库的方法
查看>>
zxing二维码
查看>>
.NET平台下的微信SDK(Rabbit.WeiXin)开源发布
查看>>