C# 6.0 功能预览 (一)
一、索引的成员和元素初始化
1.1 原始初始化集合 Dictionary
1.2 键值初始化集合 Dictionary
1.3 运算符 $ 初始化集合 Dictionary
二、自动属性的初始化
一不小心发现 C# 已经到 6.0 了,现在项目中使用的还是 4.0,这节奏,完全跟不上啊!
虽然自己也没有使用过 6.0,既然看到了,就拿出来和园有分享一下。
一、索引的成员和元素初始化
1.1 原始初始化集合 Dictionary
思考一下,下面的单元测试
通过集合初始化器给一个集合赋值
DictionaryIndexWithoutDotDollar
1.2 键值对始化集合 Dictionary
尽管上面的代码有些隐晦,但他还是一个键值对集合。如果语法为<index> = <value>的形式,会更加清晰,容易理解。在 C# 6.0 中,就可以通过 C# 对象初始化器和一个新的索引成员语法来初始化。
下面是基于整型元素的初始化:
IndexValue
下面介绍一个使用字符串作为索引类型,并使用索引成员初始化器指定元素值
1.3 运算符 $ 初始化集合 Dictionary
随着新的索引成员初始化器出现的还有一个新运算符 “$”(难道他的灵感来自于ps,自己瞎猜的)。字符串索引成员语法是提供给基于字符串索引使用的。使用该新语法,更像是动态成员调用,而非上面字符串的表示。
下面是一个例子
DictionaryIndexWithDotDollar
为了理解运算符“$”,请留意调用的 AreEqual 方法。有没有注意到 builtInDataTypes 变量调用 dictionary 的成员 “$Boolean”,但是在 dictionary 中没有 “Boolean” 成员。因为运算符 “$” 调用 dictionary 中的索引成员,就等同于 buildInDataTypes["Boolean"],所以使用运算符 “$” 时,不需要明确指出索引。
作为基于字符串的运算,编译时没有验证字符串索引在 dictionary 中是否存在。也就是说,只要是合法的C#成员(区分大小写)在运算符 “$”($+”C#成员”)。
更加令人意外的索引成员语法是,考虑了字符串索引在若弱类型数据(如:XML、JSON、CSV、甚至是数据库查找)种的优势。下面是一个,使用Newtonsoft.Json框架很方便的使用字符串索引成员的例子。
JsonWithDollarOperatorStringIndexers
二、自动属性初始化
初始化类总是让人很厌烦。思考下,例如,一个简单的自定义集合类型(如,Queue<T>),在其内部维护一个私有 System.Collections.Generic.List<T> 属性列表。当实例化集合时,就必须初始化这个包含列表的队列,但是,对于一个属性,这样做的合理方案是支持的字段需要有一个初始化器或其他构造函数,但是,这种组合的方式代码量几乎会翻番。
用C#6.0中,有一个捷径:自动属性初始化。现在,就可以指定直接初始化,代码如下:
Queue
更多内容请参考http://msdn.microsoft.com/en-us/magazine/dn683793.aspx
在此谢谢读完这篇博客,有什么写的不对的地方请指正。
有帮助就推荐下,有感想就写下留言,不满意也写下留言,有问题及时更正。
学习坚持,坚持学习
Boyce