原文地址

Mads Torgersen,微软 C# 程序管理者,它发布了一个视频,描述即将到来的下一个 C# 版本——C# 6。在 C# 6 的新特性之间,Mads 主要提到了 getter-only 属性,拉姆达箭头操作符,字符串插值(string interpolation) 等等。

首先,Mads 说,C# 6 不会改版 C# 的设计哲学,并且将提供很多小得特性,来帮助整洁代码。

Getter-only 自动属性

C# 6 允许定义不变的自动化属性,例如,只支持一个 getter 方法的自动化属性:

public class Point

{

    public int X { get; }

    public int Y { get; }

    public int ReadWrite { get; set; }

}

Getter-only 自动化属性是只读的,可以通过构造函数来赋值。

这个没太明白,C# 6 之前的版本也有这个特性啊~

String 操作

字符串插值传统的C#语法按 Mads 描述为“一种混乱且容易出错”:

return String.Format("({0}, {1})", X, Y);

C# 6 将引入一个新的字符串插语法:

return "(\{X}, \{Y})";

单方法表达式的 Lamba 箭头操作符(Lamba-arrow operator

新的 lambda 箭头操作符将简化返回一个单独表达式值的方法定义:

public override string ToString() => "(\{X}, \{Y})";

public double Dist => Sqrt(X * X + Y * Y);

按照 Mads 的说法,这将帮助减少大量“样板式”代码的键入。

Index 初始化器

在现在的 C# 中,index 设置器必须用一个单独的语句赋值:

var result = new JObject();

result["x"] = X;

result["y"] = Y;

在 C# 6,可能用一个表达式来初始化对象:

var result = new JObject() { ["x"] = X, ["y"] = Y };

这将导致一个高简洁和可读性好的 ToJSon 方法的定义:

public JObject ToJson() => new JObject() { ["x"] = X, ["y"] = Y };

Null 传播操作符(Null-propagating operators

Null 条件操作符是一个新特性,旨在检查 null 值。因此,不是下面那样检查:

if (json != null &&

    json["x"] != null &&

    json["x"].Type == JTokenType.Integer)

C# 6 运行使用一个新的 ? 操作符,将计算紧跟着它表达式的一部分,只要它应用在一个非null对象,上述表达式就可以缩小到:

if (json?["x"]?.Type == JTokenType.Integer)

上面这几个特性,微软显然吸收了开源社区的做法,比如,Groovy,让代码变得更加简洁~

异常过滤(Exception filtering

异常过滤运行捕获表达式,只要符合一个特定条件:

try

{ }

catch (ConfigurationException e) if (e.IsSevere)

{ }

Mads 说,这是一个更好的 catch-rethrow 语法,因为,以前,当重新抛出异常时,异常最初发生的地方将会丢失。

catch 和 finally 块中的 Await

最后,在 catch 和 finally 块中可以使用 await,这增加了在错误处理的灵活性。Mads 补充说,该特性被排除在 C# 6 之前的版本,因为,这个特性如何实现,那时还不明确。

try

{ }

catch (ConfigurationException e)

{ 

    await LogAsync();

}

finally

{

    await CloseAync();

}

最近发布的Xamarin.Studio 5.9增加了 C# 6 支持,改进了 Sketches,并带来了新的调试器查看器及其它一些更新。C# 6 将在 Visual Studio 2015 中正式发布,并只在社区版本中提供。尽管如此,Xamarin.Studio 也已经支持 C# 6 的新特性。

C# 6 的新特性~的更多相关文章

  1. SQL Server 2014 新特性——内存数据库

    SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...

  2. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  3. [干货来袭]C#6.0新特性

    微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨天发布的新的C#6.0的部分新特性吧.. ...

  4. CSS3新特性应用之结构与布局

    一.自适应内部元素 利用width的新特性min-content实现 width新特性值介绍: fill-available,自动填充盒子模型中剩余的宽度,包含margin.padding.borde ...

  5. 【译】Meteor 新手教程:在排行榜上添加新特性

    原文:http://danneu.com/posts/6-meteor-tutorial-for-fellow-noobs-adding-features-to-the-leaderboard-dem ...

  6. 跨平台的 .NET 运行环境 Mono 3.2 新特性

    Mono 3.2 发布了,对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新. Mono 3.2 主要新特性: LLVM 更新到 3.2 版本,带来更多 ...

  7. Atitit opencv版本新特性attilax总结

    Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...

  8. es6 新特性2

    es6其他几个非常有用的新特性. import export 这两个家伙对应的就是es6自己的module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成 ...

  9. ES6 新特性

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  10. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

随机推荐

  1. bzoj1150 堆应用,好题

    #include<bits/stdc++.h> using namespace std; #define maxn 100005 #define INF 0x3fffffff #defin ...

  2. 性能测试三:jmeter进阶之图形插件

    一.图形化插件的使用 使用Jmeter插件可以更直观的查看tps和响应时间 插件官网: http://jmeter-plugins.org/downloads/all 第一种方法,找到需要的插件下载j ...

  3. 优化MVC,实现数据库表的记录的添加、删除、修改、查询。

    一.在UserDAO里面重写实体user要调用的方法: 1.查询所有user表中的记录.用getAllUser()方法得到List public class UserDAO { public List ...

  4. review-questions

    questions: python字典中items()和iteritems()的区别 items()返回的是列表对象,而iteritems()返回的是迭代器对象 print dic.items() # ...

  5. noip2016 天天爱跑步

    没看过正解..应该是些乱七八糟想不出来的东西 解法1: 首先,必须要做的是将每条路径拆成2个直的路径 那么对于那条从深度大的到深度小的路径 dep[x]-dep[y]应该等于观察时间 那么就可以在这些 ...

  6. 微信WebView关闭后本地cookie无法清除问题

    问题背景 在微信WebView下的页面中登录后,关闭WebView返回后再次进入页面,发现登录态还存在,原因是微信不会主动清除cookie以及其他的缓存. 期望是关闭窗口后会清除cookie,重新进入 ...

  7. python全栈开发day32-进程创建,进程同步,进程间的通信,进程池

    一.内容总结 1.进程创建 1) Process:两种创建一个新进程的方法: 1.实例化Process,通过args=(,)元组形式传参,2创建类继承Process,类初始化的时候传参数 2) p.j ...

  8. python全栈开发day23-面向对象高级:反射(getattr、hasattr、setattr、delattr)、__call__、__len__、__str__、__repr__、__hash__、__eq__、isinstance、issubclass

    一.今日内容总结 1.反射 使用字符串数据类型的变量名来操作一个变量的值. #使用反射获取某个命名空间中的值, #需要 #有一个变量指向这个命名空间 #字符串数据类型的名字 #再使用getattr获取 ...

  9. Codeforces 286B Shifting (看题解)

    Shifting 感觉这题被智力打击了.. 刚开始我想的是对于每个位置我们可以暴力找出最后的位置在哪里. 因为对于当前位置p, 在进行第x步操作时, 如果p % x == 1 则 p = p + x ...

  10. GitHub安装教程

    第一步是安装两个软件 安装 git for windows这个是一个git的windows系统的命令行版本https://git-scm.com/downloads或者https://pan.baid ...