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

  • 时间:
  • 浏览:1

每个人 感觉真的这么 必要放开这俩 限制。

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

都都后能 看到,上端两份貌似相同的代码,难能可贵生成的IL还是有很大区别的,新版代码中会用isinst判断算是为Exception的实例,后后 用brtrue来判断当前算是

那先 样的IL。

索性趁热打铁,看看这俩 索引器法律办法的内内外部代码是那先 样的,从下图中都都后能 看到是有一一俩个Insert操作。

代码如下:

可能你仔细看得话,好像很多很多我有一一俩个catch中省略了{}而已嘛?并这么 看到那先 很多很多特殊的东西,为什么我么我你会就非常好奇的把上端的代码恢复到6.0版本事先,

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

那大问题来了,可能我定义了有一一俩个默认的构造函数,后后 在上端写下x=5,y=5,那谁都都后能 我这么乎 ,当我定义point的事先,有这么 调用构造函数呢???

三:异常筛选器

接来下,很多很多人 就来看看这两份代码的IL到底会是个那先 样子?内心狂鸡冻啊,啊啊啊啊啊啊啊。。。。都痉挛了。。。。。

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

第一眼看到这俩 还是蛮新鲜的,不过转眼就能想到是有的是跟数组初始化器,对象初始化器有一一俩个样?你会是这么 想就对了,下面很多很多人 来看看这玩意会生成

从上图中都都后能 清楚的看到set_Item法律办法,这俩 法律办法很多很多我编译器上层的索引器语法糖,很多很多我忽悠很多很多人 提高开发速度的,不过也还行,起码你会少输入了

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

从图中看到并这么 调用默认构造函数,到这里我也知道了,都都后能 了在我new的事先才会调用,很多很多你会发现,值类型是在模仿引用类型的使用法律办法了,

  还是按照江湖老规矩,先扒开看看到底是个那先 玩意。

为null,可能是null,则不要执行ex.Message.Contains("timeout")得话了。后后 老版代码并这么 true/false判断,还是按照常规执行,很多很多现在都都后能 知道,

可能执行了默认构造函数,很多很多我point.X的事先会输出5,是有的是难能可贵很糙奇怪呢?很多很多基于这俩 原困,C#6.0事先为了避嫌,就禁止了这俩 默认的值

有一一俩个dic,后后 把代码还原如下:

难能可贵并有的是简单的省略了个"{}"大括号,这俩 语法糖在底层还是很多很多智能判断的。

值类型不需用new就都都后能 在栈中分配空间,比如下面的形态体Point,倘若很多很多人 定义了,就都都后能 方便的使用point.X值。

  我这么乎 有几块人知道值类型在C#6.0事先是绝对都都后能 了能定义默认构造函数的,为那先 这么 说呢?道理很简单,可能值类型和引用类型的机制不一样,