前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#7.1 新增功能

C#7.1 新增功能

作者头像
张传宁IT讲堂
发布2019-09-17 18:06:55
5000
发布2019-09-17 18:06:55
举报

C# 7.1 是 C# 语言的第一个点版本(更新版本)。 它标志着该语言发布节奏的加速。 理想情况下,可以在每个新功能准备就绪时更快推出新功能。 C# 7.1 增加了将编译器配置为匹配特定语言版本的功能。 从而可以分别制定有关升级语言版本的决策和有关升级工具的决策。

C# 7.1 增加了语言版本选择配置元素、三个新的语言功能和新的编译器行为。

最后,编译器有 -refout-refonly 两个选项,可用于控制引用程序集生成

若要使用单点版本中的最新功能,需要配置编译器语言版本并选择版本。

01 异步 main 方法

异步 Main 方法使你能够在 Main 方法中使用 await 关键字。 在过去,需要编写:

代码语言:javascript
复制
static int Main()
{
    return DoAsyncWork().GetAwaiter().GetResult();
}

现在,可以编写:

代码语言:javascript
复制
static async Task<int> Main()
{
    // DoAsyncWork,包括其等待表达式:
    return await DoAsyncWork();
}

如果程序不返回退出代码,可以声明返回 TaskMain 方法:

代码语言:javascript
复制
static async Task Main()
{
    await SomeAsyncMethod();
}

如需了解更多详情,可以阅读编程指南中的异步 Main 一文。

02 默认文本表达式

默认文本表达式是针对默认值表达式的一项增强功能。 这些表达式将变量初始化为默认值。 过去会这么编写:

代码语言:javascript
复制
Func<string, bool> whereClause = default(Func<string, bool>);

现在,可以省略掉初始化右侧的类型:

代码语言:javascript
复制
Func<string, bool> whereClause = default;

若要详细了解此增强功能,可以参阅 C# 编程指南中的默认值表达式一文。

此增强功能也会更改某些default 关键字 的分析规则。

03 推断元组元素名称

此功能是对 C# 7.0 中引入的元组功能一次小型增强。 在初始化元组时,许多时候,赋值操作右侧的变量名与用于元组元素的名称相同:

代码语言:javascript
复制
int count = 5;
string label = "Colors used in the map";
var pair = (count: count, label: label);

元组元素的名称可通过在 C# 7.1 中初始化元组时使用的变量进行推断:

代码语言:javascript
复制
int count = 5;
string label = "Colors used in the map";
var pair = (count, label); // element names are "count" and "label"

若要详细了解此功能,可以参阅元组一文。

04 泛型类型参数的模式匹配

自 C# 7.1 起,isswitch 类型模式的模式表达式的类型可能为泛型类型参数。 这可能在检查 structclass 类型且要避免装箱时最有用。

05 引用程序集生成

有两个新编译器选项可生成仅引用程序集:-refout-refonly 。 链接的文章详细介绍了这些选项和引用程序集。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档