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

本文共 2272 字,大约阅读时间需要 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 许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 (包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我 。
 
原文:

转载于:https://www.cnblogs.com/shiningrise/p/5690114.html

你可能感兴趣的文章
过点(2,4)作一直线在第一象限与两轴围成三角形,问三角形面积的最小值?...
查看>>
java aes CBC的填充方式发现
查看>>
使用ionic cordova build android --release --prod命令打包报有如下错误及解决方法
查看>>
BZOJ 2338 HNOI2011 数矩形 计算几何
查看>>
关于页面<!DOCTYPE>声明
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
C++标准库vector使用(更新中...)
查看>>
cocos2d-x 2.2.6 之 .xml文件数据读取
查看>>
枚举的使用
查看>>
BZOJ 1531 二进制优化多重背包
查看>>
BZOJ 2324 (有上下界的)费用流
查看>>
python3基础06(随机数的使用)
查看>>
Zookeeper系列(二)特征及应用场景
查看>>
【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
查看>>
Spring Boot使用Druid和监控配置
查看>>
poi 处理空单元格
查看>>
Android 内存泄漏优化总结
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
Spring Cloud微服务笔记(五)Feign
查看>>
C语言键盘按键列表
查看>>