一:背景

1. 讲故事

.NET5 终于在 2020-08-25 也就是前天发布了第八个预览版,这么多的预览版搞得我都麻木了,接踵而来的就是更多的新特性加入到了 C# 9 中,既然还想呆在这条船上,得继续硬着头皮学习哈,这一篇跟大家聊聊新增的几个关键词。

二:新增关键词

1. init

出来一个新语法糖,首先要做的就是去揭它的老底,这样可以方便推测它的应用场景,为了方便表述,我先上一个例子:


public class Person
{
public string Name { get; init; }
}

乍一看有点懵逼,没关系,先用 ILSpy 看一下,如下图:

上面这张图就已经很清晰的解释了,原来 init 就是自动生成了一个对 私有只读字段 的封装,对于 readonly 相信大家已经轻车熟路了,它的初始化只有两种方式:声明时和构造函数中,但从 C# 9 开始就多了一个属性赋值方式,也就是说现在有三种赋值方式了,还原代码如下:


public class Person
{
private readonly string name; public string Name
{
get => name; init
{
name = value;
}
}
}

这种方式要是换作以前肯定是报错的,如下图:

有一点要注意的是编译器还做了一个特殊限制,准你在 类初始化器 中使用,不准你单独拿出来赋值,如下图所示:

所以总的来说, init 的作用就是多了一种让你初始化 只读字段 的方式,仅此而已罢了。

2. record

为了方便演示,我先上一段代码,如下所示:


public record Person
{
public string Name { get; set; } public int Age { get; set; }
}

看起来挺

快醒醒,C# 9 中又来了一堆关键词 init,record,with的更多相关文章

  1. 翻译:让网络更快一些——最小化浏览器中的回流(reflow)

    关于reflowreflow(英音:[ri:’fləu] 美音:[ri’flo])在词典中的解释是回流,逆流.而在web应用中,翻译为回流有些牵强.我个人觉得,理解为回炉(重新塑形),似乎更加形象一点 ...

  2. dotnet 是 前30个增长最快速度的开源项目中排名第一的开发平台

    CNCF 的博客 发了一篇文章 <Update on CNCF and Open Source Project Velocity 2020>,中文翻译参见 2020年CNCF和开源项目开发 ...

  3. Kooboo中主要的几个关键词中的关系

    Kooboo中主要的几个关键词中的关系 Content Type  //相当于数据库表 Content      //相当于数据 View         //部分View 她可以使用Content ...

  4. 如何从统计中批量获取BD搜索关键词及对应的入口页面?

    前面我们介绍了通过cnzz的访问明细获取到搜索关键词及对应的入口页面,但是从BD搜索进来的关键词无法完整显示,只能呈现一些bd图片搜索的关键词,这是因为百度宣布从去年5月开始逐渐取消了referer关 ...

  5. 醒醒吧!互联网的真正未来不是AI,更不是VR,AR,而是区块链

    这些力量并非命运,而是轨迹.他们提供的并不是我们将去向何方的预测,而是告诉我们,在不远的将来,我们会向那个方向前行,必然而然. ---凯文•凯利 文字与货币 人类在演化过程中,凭借智慧创造了无数事物, ...

  6. 醒醒吧少年,只用Cucumber不能帮助你BDD

    转载:http://insights.thoughtworkers.org/bdd/ 引言 在Ruby社区中,测试和BDD一直是被热议的话题,不管是单元测试.集成测试还是功能测试,你总能找到能帮助你的 ...

  7. 醒醒!Python已经支持中文变量名啦!

    最近,我在翻阅两本比较新的 Python 书籍时,发现它们都犯了一个严重的低级错误! 这两本书分别是<Python编程:从入门到实践>和<父与子的编程之旅>,它们都是畅销书,都 ...

  8. 对于delphi for linux心存梦想的同学,彻底醒醒吧

    Borland 曾经多次做市场调查,很多人呼吁推出delphi for linux.可是直到kylix发展到第三版,borland才明白:一个内置C编译器环境并与之关系紧密的免费OS,没有人愿意花钱去 ...

  9. 那些鼓吹国内首个.NET 5框架的,该醒醒了!

    前两天看过园子里有篇[国内首个 .NET 5 框架 XX 斩获 XXX stars,XXX 发布],一顿羡慕嫉妒恨啊.我这.net core 3.1才上手没几天,还没用热乎呢,你这.NET 5的框架都 ...

随机推荐

  1. Hyper-V设置固定IP

    win+x以管理员启动PowerShell 创建虚拟交换机,等同于在Hyper-V管理器界面中新建虚拟网络交换机 New-VMSwitch -SwitchName "NAT-VM" ...

  2. PHP array_intersect_key() 函数

    实例 比较两个数组的键名,并返回交集: <?php$a1=array("a"=>"red","b"=>"gree ...

  3. PHP imagealphablending - 设定图像的混色模式

    imagealphablending — 设定图像的混色模式.高佣联盟 www.cgewang.com 语法 bool imagealphablending ( resource $image , b ...

  4. P4383 [八省联考2018]林克卡特树 树形dp Wqs二分

    LINK:林克卡特树 作为树形dp 这道题已经属于不容易的级别了. 套上了Wqs二分 (反而更简单了 大雾 容易想到还是对树进行联通情况的dp 然后最后结果总和为各个联通块内的直径. \(f_{i,j ...

  5. BSOJ 5553 wangyurzee的树 prufer序列 容斥

    BSOJ我也不知道在哪. 容易想到容斥. 考虑不合法的方案 想到强制某个点的度数为限制即可. 这样就变成了了总方案-一个不合法+两个不合法-3个......的模型了. 坑点 当强制两个相同的点时 方案 ...

  6. bzoj 4238 电压

    LINK:电压 一张图 每个点可以为黑点或百点 每一条边的两端都必须为一黑一白.询问又多少条边满足除了这条边不满足条件其余所有边都满足条件. 分析一下这个所谓的条件 每一条边的两端必须为一黑一白 所以 ...

  7. Sharding-JDBC实现垂直拆分

    参考资料:猿天地  https://mp.weixin.qq.com/s/wl8h6LIQUHztVuVbjfsU3Q  作者:尹吉欢 当一个项目量增大,数据表数量增多时,就需要对数据表进行垂直拆分, ...

  8. AI测温落地趋势:已成日常刚需 产品形态呈细分化发展

    现如今不管走到哪儿,机场.车站.医院.商场.超市等公共场所都已经将体温检测作为常态化防疫手段.自全球疫情发生以来,不管欧洲.亚洲,还是中东.东南亚等国家都已经意识到,疫情防控的第一道关口便是测温. 而 ...

  9. 深度学习模型调优方法(Deep Learning学习记录)

    深度学习模型的调优,首先需要对各方面进行评估,主要包括定义函数.模型在训练集和测试集拟合效果.交叉验证.激活函数和优化算法的选择等. 那如何对我们自己的模型进行判断呢?——通过模型训练跑代码,我们可以 ...

  10. java目前常用的几种定时任务

    java目前常用的几种定时任务 JDK自带的Timer spring的Task Quartz elastic-job分布式定时任务 一.JDK自带的Timer Timer是jdk中提供的一个定时器工具 ...