看看C# 6.0中那些语法糖都干了些什么(终结篇)

  • 时间:
  • 浏览:0

哪些地方样的IL。

不可能 执行了默认构造函数,原本point.X的以时会输出5,有无觉得怪怪的奇怪呢?随后 基于这些愿因,C#6.0以前为了避嫌,就禁止了这些默认的值

三:异常筛选器

从图中都看并没人调用默认构造函数,到这里我也知道了,必须在我new的以前才会调用,随后 让我发现,值类型是在模仿引用类型的使用措施 了,

每个人感觉真的没人必要放开这些限制。

  还是按照江湖老规矩,先扒开看都看底是个哪些地方玩意。

接来下,亲戚朋友就来看看这两份代码的IL到底会是个哪些地方样子?内心狂鸡冻啊,啊啊啊啊啊啊啊。。。。都痉挛了。。。。。

那问题报告 报告 来了,不可能 我定义了一另十个 多多默认的构造函数,或者 在后边写下x=5,y=5,那谁里能 我不知道,当我定义point的以前,有没人调用构造函数呢???

第一眼都看这些还是蛮新鲜的,不过转眼就能想到有无跟数组初始化器,对象初始化器一另十个 多多样?想随后 没人想就对了,下面亲戚朋友来看看这玩意会生成

一:带索引的对象初始化器

  我不知道有多少人知道值类型在C#6.0以前是绝对不里能 定义默认构造函数的,为哪些地方没人说呢?道理很简单,不可能 值类型和引用类型的机制不一样,

从上图中里能 清楚的都看set_Item措施 ,这些措施 随后 编译器上层的索引器语法糖,随后 忽悠亲戚朋友提高开发带宽的,不过也还行,起码让我少输入了

二:无参数的社会形态体构造函数

值类型不都要new就里能 在栈中分配空间,比如下面的社会形态体Point,假如有一天亲戚朋友定义了,就里能 方便的使用point.X值。

类型构造形式。或者 这次在C#6.0中居然放开了,随后 让我很迫不及待的去看一都看底调没调用默认构造函数,如下图:

不可能 你仔细看搞笑的话,好像随后 一另十个 多多catch中省略了{}而已嘛?并没人都看哪些地方其他特殊的东西,或者 让我非常好奇的把后边的代码恢复到6.0版本以前,

里能 都看,后边两份貌似相同的代码,觉得生成的IL还是有很大区别的,新版代码中会用isinst判断有无为Exception的实例,或者 用brtrue来判断当前有无

为null,不可能 是null,则不不执行ex.Message.Contains("timeout")搞笑的话了。或者 老版代码并没人true/false判断,还是按照常规执行,随后 现在里能 知道,

觉得这些简单的省略了个"{}"大括号,这些语法糖在底层还是其他智能判断的。

索性趁热打铁,看看这些索引器措施 的外部代码是哪些地方样的,从下图中里能 都看是一另十个 多多Insert操作。

  C#6.0中这些异常筛选器还居然个比较新奇的东西,不看我不知道,一看吓一跳,比如下面的代码。

代码如下:

一另十个 多多dic,或者 把代码还原如下: