阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

C# 6 预览

  • 2014-11-21
  • 本文字数:1262 字

    阅读完需:约 4 分钟

Mads Torgersen 是微软的 C#项目经理,他发布了一段简短的视频演讲,描述了将要发布的 C#的下一个大版本 C# 6 将会带来什么。在 C# 6 的新功能中,Mads 着重讲了只读属性(getter-only properties)、lambda 箭头运算符(lambda-arrow operator)、字符插值(string interpolation)以及其他一些内容。

开始时,Mads 说,C# 6 不会改变 C#的设计哲学,主要会提供大量的小功能帮助简化代码。

只读的自动属性(Getter-only auto-properties)

C# 6 允许定义不可变的自动属性(immutable auto-properties),也就是说只支持读方法(getter method)的自动属性:

复制代码
public class Point
{
public int X { get; }
public int Y { get; }
public int ReadWrite { get; set; }
}

只读的自动属性是通过在构造函数中为之分配一个只读的域来实现的。

字符操作

Mads 把 C#传统的字符插值语法描述为“困惑之源,容易出错”:

复制代码
return String.Format("({0}, {1})", X, Y);

以上语法会被一种新的字符插值语法所取代:

复制代码
return "(\{X}, \{Y})";

Lambda 箭头运算符有助于编写返回单个表达式的方法

新的 lambda 箭头运算符能简化那些只返回单个表达式的方法的定义:

复制代码
public override string ToString() => "(\{X}, \{Y})";
public double Dist => Sqrt(X * X + Y * Y);

根据 Mad 的说法,这将减少很多冗余代码的输入。

索引初始化语法

在当前的 C#版本中,要设置某个索引的值,必须要使用单独的语句:

复制代码
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 的条件运算符是一项新功能,旨在把检查空值的操作隐藏起来,所以相比以下的这种检查:

复制代码
if (json != null &&
json["x"] != null &&
json["x"].Type == JTokenType.Integer)

C# 6 允许使用新的?运算符,只有对象非空的时候,跟在它后面的表达式才会被求值。所以上面的表达式可以简化为:

复制代码
if (json?["x"]?.Type == JTokenType.Integer)

异常过滤

异常过滤允许只有在满足某个条件的前提下捕获异常:

复制代码
try
{ }
catch (ConfigurationException e) if (e.IsSevere)
{ }

Mads 说,这种做法比“捕获异常——再次抛出”的做法更好,因为当你再次抛出异常的时候,这个异常最初出现时的信息已经丢失了。

允许在 catch 和 finally 代码块中使用 await

最后,C# 6 允许在 catch 和 finally 代码块中使用 await,这样大大增强了错误处理的灵活性。Mads 评论道,这个功能之所以被之前的 C#版本拒之门外,只是因为还没有想明白如何去实现它。

复制代码
try
{ }
catch (ConfigurationException e)
{
await LogAsync();
}
finally
{
await CloseAync();
}

可以从官方资源中获得更多的C#信息,其中包括了更多细节以及完整的功能列表。

InfoQ 曾经报道过 C# 6 的新功能,比如模式匹配更简单的不可变对象

查看英文原文: A Preview of C# 6

2014-11-21 00:393046
用户头像

发布了 77 篇内容, 共 35.3 次阅读, 收获喜欢 25 次。

关注

评论 1 条评论

发布
用户头像
借博主宝地一用,给大家推荐一个最近很火的接口管理工具apipost,很好用,有时间可以试试
2022-04-13 20:58
回复
没有更多了
发现更多内容

Data Merge for Mac(开发软件)v1.1.2激活版

影影绰绰一往直前

Notebooks for Mac(多功能记事本)v3.4激活版

影影绰绰一往直前

Perfectly Clear Workbench for Mac(智能图像清晰修复软件) v4.6.0.2642永久激活版

iMac小白

Word 2021 LTSC for Mac(word 2021) v16.83正式激活版

iMac小白

TG Pro for mac(Mac硬件温度检测工具) v2.92激活版

iMac小白

2024上海国际液态金属技术及应用展览会

吹吹晚风

让数字人成为文化传播新使者!

青否数字人

Topaz Video AI for mac(地表最强视频无损放大修复工具)v4.2.1激活版

影影绰绰一往直前

FxFactory 8 Pro for Mac(视觉特效处理包)v8.0.14激活版

影影绰绰一往直前

智能商品管理系统:驱动零售盈利型的数据利器

第七在线

2024上海国际能源颗粒材料及设备展览会

吹吹晚风

量化交易策略系统搭建,合约跟单交易系统软件开发

西安链酷科技

量化软件开发

顺丰科技函证LaaS元能力碰撞数字生态

新消费日报

光伏储能制造业生产管理mes系统解决方案

万界星空科技

制造业 mes 能源行业 万界星空科技 光伏

爆款游戏如何借助 RocketMQ Serverless,打造流畅体验并节省 98% 成本?

阿里巴巴云原生

阿里云 RocketMQ 云原生

Microsoft Outlook 2021 LTSC for Mac v16.83中文正式版

iMac小白

FotoMagico for Mac(专业幻灯片制作软件) v6.5.8激活版

iMac小白

Excel 2021 LTSC for Mac(excel表格) v16.83中文正式版

iMac小白

2024上海国际电子浆料及新型浆料展览会

吹吹晚风

中山大学数学学院x 赛博威 | 人工智能算法产学研合作基地正式揭牌!

赛博威科技

《行业指标体系白皮书》重磅发布,剖析指标建设困境,构建前瞻性的指标体系(附下载)

袋鼠云数栈

大数据 指标体系 数据指标 指标

无缝集成 MongoDB Relational Migrator,Tapdata 提供关系型到 MongoDB 实时迁移优化方案

tapdata

mongodb database Relational Migrator

Allavsoft for Mac(优秀的视频下载工具)v3.26注册激活版

iMac小白

Alfred 5 for Mac(苹果效率提升工具)v5.5 (2257)免激活版

影影绰绰一往直前

dapp系统搭建、去中心化智能合约开发

西安链酷科技

Fil算力挖矿分币系统 defi金融开发 质押挖矿开发

如何仅用3行代码,搞定业务敏感数据加解密?

阿里云瑶池数据库

数据库 云计算 阿里云 数据安全 polarDB

Snagit for mac(最强大的屏幕截图软件) v2024.2.1中文版

iMac小白

选择云游戏服务器的关键考量:性能、延迟与成本分析

一只扑棱蛾子

云服务器 游戏服务器 云游戏服务器

亚马逊扣店租/注册店铺可以使用虚拟卡吗?

跨境

亚马逊

AIOps 智能运维:有没有比专家经验更优雅的错/慢调用分析工具?

阿里巴巴云原生

阿里云 云原生 AIOPS

Navicat for PostgreSQL mac(PostgreSQL 数据库开发工具) v16.3.7 中文激活版

iMac小白

C# 6预览_.NET_Sergio De Simone_InfoQ精选文章