博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 6.0可能的新特性
阅读量:5959 次
发布时间:2019-06-19

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

 

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
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 许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 (包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我 。
 
原文:
你可能感兴趣的文章
LXD 2.0 系列(八):LXD中的LXD
查看>>
安装WMware 在Windows平台下学习Linux
查看>>
NodeJS对于Java开发者而言是什么?
查看>>
2016 软件开发的七大趋势:容器技术将统治世界
查看>>
从十大要素筛选主机托管公司
查看>>
IDC:2020年企业将在网络安全上花费1016亿美元
查看>>
【独家】新智元×出门问问六问六答:获大众 1.8 亿美元后准备做什么
查看>>
苹果在国贸改造了一套房 智能家居圈都慌了!
查看>>
一年400元,监控APP让你知道对方的所有隐私
查看>>
《VMware Virtual SAN权威指南(原书第2版)》一1.2 软件定义的存储
查看>>
《UNIXLinux程序设计教程》一3.3 设置描述字的文件位置
查看>>
工信部周平:区块链及其标准化发展趋势
查看>>
云服务器 ECS 建站教程:部署RabbitMQ
查看>>
企业数据中心电缆类型及其影响的比较
查看>>
《深入理解Android:Telephony原理剖析与最佳实践》一第3章 主要技术准备
查看>>
震惊!Android 手机为什么没有 iPhone 安全,看完这篇你就知道了
查看>>
运营商渠道价值回归 或仍有巨大潜力
查看>>
《深入理解OSGi:Equinox原理、应用与最佳实践》一第1章 Java模块化之路
查看>>
云计算巨头落户厦门
查看>>
虽然医疗业大肆投资AI,但其产生的价值仍相当有限
查看>>