C# 7.1 中的新增功能

2017/08/16
作者
Bill Wagner olprod v-radelg ExDevilLee
C# 7.1 是 C# 语言的第一个点版本(更新版本)。 它标志着该语言发布节奏的加速。 理想情况下,可以在每个新功能准备就绪时更快推出新功能。 C# 7.1 增加了将编译器配置为匹配特定语言版本的功能。 从而可以分别制定有关升级语言版本的决策和有关升级工具的决策。
C# 7.1 增加了语言版本选择配置元素、三个新的语言功能和新的编译器行为。
此版本中新增的语言功能包括:
async Main 方法
应用程序的入口点可以含有 async 修饰符。
default 文本表达式
在可以推断目标类型的情况下,可在默认值表达式中使用默认文本表达式。
推断元组元素名称
在许多情况下,可通过元组初始化来推断元组元素的名称。
最后,编译器有 /refout 和 /refonly 两个选项,可用于控制引用程序集生成。
若要使用单点版本中的最新功能,需要配置编译器语言版本并选择该版本。
异步 main 方法
异步 Main 方法使你能够在 Main 方法中使用 await 关键字。 在过去,需要编写:
C#

复制
static int Main()
{
return DoAsyncWork().GetAwaiter().GetResult();
}
现在,您可以编写:
C#

复制
static async Task Main()
{
// This could also be replaced with the body
// DoAsyncWork, including its await expressions:
return await DoAsyncWork();
}
如果程序不返回退出代码,可以声明返回 Task 的 Main 方法:
C#

复制
static async Task Main()
{
await SomeAsyncMethod();
}
你可以在编程指南的异步 Main 方法主题中阅读更多详细信息。
默认文本表达式
默认文本表达式是针对默认值表达式的一项增强功能。 这些表达式将变量初始化为默认值。 过去会这么编写:
C#

复制
Func<string, bool> whereClause = default(Func<string, bool>);
现在,可以省略掉初始化右侧的类型:
C#

复制
Func<string, bool> whereClause = default;
你可以通过 C# 编程指南的默认值表达式 主题了解有关此增强功能的详细信息。
此增强功能也会更改某些default 关键字 的分析规则。
推断元组元素名称
此功能是对 C# 7.0 中引入的元组功能一次小型增强。 在初始化元组时,许多时候,赋值操作右侧的变量名与用于元组元素的名称相同:
C#

复制
int count = 5;
string label = “Colors used in the map”;
var pair = (count: count, label: label);
元组元素的名称可通过在 C# 7.1 中初始化元组时使用的变量进行推断:
C#

复制
int count = 5;
string label = “Colors used in the map”;
var pair = (count, label); // element names are “count” and “label”
可以在元组主题中了解有关此功能的详细信息。
引用程序集生成
有两个新的编译器选项会生成“仅引用”程序集:/refout 和 /refonly。 链接的主题详细介绍了这些选项和引用程序集。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值