C# 8.x 先睹为快

尽管 C# 8.0 还需要几个月的时间才能发布,但是 C# 8.x 的特性计划已经开始了。该计划中的特性有一些是新提出的,而另外一些则是之前在 C# 8 中考虑过的。和往常一样,这个特性列表仍可能会发生变化。

如之前的一个报告所讨论的那样,Caller Expression Attribute 特性允许函数捕获用于生成其参数的表达式。它主要用于断言和自动化测试。

new 关键字类型推断(正式名称为目标类型“new”表达式),能在通过上下文可以确定类型名称的情况下减少样板代码。

虽然目前对于Defer 声明 的反对率高达到 3:1,但是在 8.x 版本,Defer 声明仍然在考虑的特性列表中。

NULL 增强公共类型

这实际上是两个需求(#33 和 #881),它使我们在处理可为空值类型和三元运算符时不再需要添加显式强制转换了。在 NULL 增强公共类型的建议下,将允许如下的使用场景。

int aint? x1 = condition ? a : nullint? bdouble cdouble? x2 = condition ? b : c

在推断数组类型或 lambda 表达式的返回类型时,也支持这种改进。

声明表达式

基于 C 语言的一个特性是赋值是表达式,而不仅仅是语句。这允许了诸如 a=b=c=0 的快捷赋值方式,但也允许了诸如 if(a=false)的错误。因此,许多设计指南都禁止在另一个语句中修改变量。

C# 一直在相反的方向上发展,它能够在诸如输出参数等新的地方定义变量,并作为模式匹配的一部分。使用声明表达式,我们几乎可以在任何可以执行赋值的地方声明变量。

以前你需要写如下的代码,

char chwhile ((ch = GetNextChar()) == 'a' || ch == 'b' || ch == 'c')

现在它可以缩短成如下代码:

while ((char ch = GetNextChar()) == 'a' || ch == 'b' || ch == 'c')

下面是你可能会写的另一个示例:

var sum = (var p = GetPoint(); p.X + p.Y);

在解构时混合声明和变量是一种相关特性的能力。它首次是在 C# 7.1 中提出的,它将允许在新定义某些(而不是全部)变量时进行多重赋值。

本地函数改进

本地函数的一个限制是它们不能应用属性(这只是 C# 的一个限制;CLR 允许这样做)。在 C# 8 中,它可能引起问题的原因是,可能需要诸如 NotNullWhenTrue 之类的属性来为可空性检查获取正确的语义。

再比如,使用本地函数的属性可以更方便地配置 ASP.NET 的路由。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WC2014】紫荆花之恋【替罪羊思想】【动态点分树】【替罪羊树】

传送门 题意:有一棵开始时没有结点的树,nnn次询问,每次新加一点并给定父结点、到父亲的距离、参数rir_iri​,并询问满足dist(u,v)≤rurvdist(u,v)\leq r_ur_vdist(u,v)≤ru​rv​的点对(u,v)(u,v)(u,v)的对数。 n≤105n\leq 10^5n≤105&…

NuGet是什么?理解与使用

如果你了解python,那么它类似pip。如果你了解nodejs,那么它类似npm。如果你了解ruby,那么它类似gem。对,它就是一个包(package)管理平台,确切的说是 .net平台的包管理工具,它提供了一…

P2468 [SDOI2010]粟粟的书架 主席树 + 二分 + 二维前缀和

传送门 文章目录题意:题意:题意: 给你一个n∗mn*mn∗m的矩阵,每次询问一个矩形,左上角是(x1,y1)(x_1,y_1)(x1​,y1​),右上角是(x2,y2)(x_2,y_2)(x2​,y2​),和一个hhh,问是否能选出…

带花树学习笔记

引入 带花树解决的是一般图的最大匹配问题。 学习此算法前你需要掌握二分图匹配的匈牙利算法,至少需要知道它的思想。 理论 众所周知,二分图匹配的思想是不断地找增广路。 严谨地讲,是找到了一条简单路径,它的起点和终点都未…

你竟然没用 Nuget 构建项目?

想写这篇文章缘起于公众号文章里的一条留言:对于一个现代化的开发平台,建立一种让开发者创建,分享与使用可复用代码的机制是十分必要的。这种“可复用代码”被打包后的文件通常被称作“包”(package),对于.…

Codeforces Round #339 (Div. 1) D. Kingdom and its Cities 虚树 + dp

传送门 文章目录题意:思路:题意: n≤1e5,∑k≤1e5,q≤1e5n\le1e5,\sum k\le1e5,q\le1e5n≤1e5,∑k≤1e5,q≤1e5。 思路: 经过分析,外敌占领的城市只有可能是两点的lcalcalca或者两点之间任意一点,是哪个点…

小白开学Asp.Net Core《四》 —— 使用AspectCore-Framework

小白开学Asp.Net Core《四》—— 使用AspectCore-Framework一、AspectCore-Framework说AspectCore-Framework不得不先谈谈的AOP,AOP:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通…

【WC2016】挑战NPC 【带花树】【建图】

传送门 题意:有nnn个球和mmm个筐,每个筐最多放333个球,每个球只能放入特定的一些筐中,在题中给出。构造一种放球的方案使得nnn个球都被放在某个筐中且 球的个数不超过111 的筐的数量尽量大。 m≤100,n≤3mm\leq 100,n\leq 3mm≤1…

P4103 [HEOI2014]大工程 虚树 + dp

传送门 文章目录题意:思路:题意: 思路: 简化一下题意就是求树上给定点集中每两个点之间的距离之和,相距最远的点,相距最近的点。 对于距离和我们统计一下边的贡献就好啦,边两头的sizesizesize乘…

【翻译】Keras.NET简介 - 高级神经网络API in C#

用C#,远离996Keras.NETKeras.NET是一个高级神经网络API,它使用C#编写,并带有Python绑定,可以在Tensorflow、CNTK或Theano上运行。其关注点是实现快速实验。因为做好研究的关键是:能在尽可能短的时间内从一个想法发展出…

TIOBE 6月排行:C# 以微弱的优势超过了 Visual Basic .NET 的排名,再次进入 TOP 5

月经贴警告……TIOBE 编程语言排行榜 7 月更新已公布,排名前十的分别是:Java, C, Python, C, C#, Visual Basic .NET, JavaScript, PHP, SQL 和汇编语言。和上个月的不同之处主要是 C# 以微弱的优势超过了 Visual Basic .NET 的排名,再次进入…

ETT学习笔记

ETT(Eular Tour Tree)是一种维护有根树的数据结构,支持以下操作 修改一个点的点权子树修改单点查询点到根路径查询修改一个点的父亲 据说可以支持换根,但用的不多而且据说很难写,所以似乎失传了( 其实没…

Codeforces Round #635 (Div. 2) D. Xenia and Colorful Gems 暴力 + 二分

传送门 文章目录题意:思路:题意: 给你三个数组a,b,ca,b,ca,b,c,让你从每个数组中选择一个数x,y,zx,y,zx,y,z,使得(x−y)2(x−z)2(y−z)2(x-y)^2(x-z)^2(y-z)^2(x−y)2(x−z)2(y−z)2最小,求这个最小值。 …

用.NET Core实现一个类似于饿了吗的简易拆红包功能

需求说明以前很讨厌点外卖的我,最近中午经常点外卖,因为确实很方便,提前点好餐,算准时间,就可以在下班的时候吃上饭,然后省下的那些时间就可以在中午的时候多休息一下了。点餐结束后,会有一个好…

【POI2011】LIZ-Lollipop 【构造】

传送门 题意:给一个长度为nnn的只有111和222的序列,多次询问给定xxx构造或判断无法构造一个区间和为xxx 注意到111和222实质上是改不改变奇偶性,所以往这上面考虑 我们发现如果一个区间[L,R][L,R][L,R]和为x(x>2)x(x>2)x(x>2),我…

kubernetes实战篇之helm示例yaml文件文件详细介绍

前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart.Helm Chart 结构Chart 目录结构mychart/ Chart.yaml LICENSE README.md values.yaml requirements.yam…

P4309 [TJOI2013]最长上升子序列 平衡树 + dp

传送门 文章目录题意:思路:题意: 思路: 注意到一个很关键的条件,每次插入iii,而iii是递增的,也就是说插入iii之后只会从前面的最大值转移过来,所以我们现在只需要维护插入操作即可&…

【AGC035C】Skolem XOR Tree【异或】【构造】

传送门 题意:给定nnn,构造或判断无法构造一个2n2n2n个结点的树,其中结点iii和ininin的权值为iii,且所有iii和ininin路径权值异或和等于iii。 注意到 2i⊕2i112i\oplus2i112i⊕2i11,然后可以脑补出 然而111没处理 发现1⊕2⊕301\…

ASP.NET Core 管道再探

几乎任何服务器端处理环境都有自己的直通组件管道,用于检查、重路由或修改传入请求和传出响应。经典 ASP.NET 围绕 HTTP 模块理念进行排列,而 ASP.NET Core 采用基于中间件组件的更现代的体系结构。最终目的是相同的 - 允许可配置的外部模块以请求&#…

GRPC与.net core

QQ讨论群:953553560正文系列章节GRPC与.net coreGRPC截止时间与元数据GRPC与netcore IdentityGRPC与netcore IdentityServer4概述GRPC的数据交互模式有:1.单项RPC,最简单的数据交换方式,客户端发出单个请求,收到单个响…