- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C的# 6.0新特性
自动属性初始化 (Initializers for auto-properties)
以前我们是这么写的
为一个默认值加一个后台字段是不是很不爽,现在我们可以这样写
只读属性的初始化(Getter-only auto-properties)
像用户 ID 这种只读属性,我们以前是这样写的
现在我们可以这样写
只读属性可以和标了 readonly 的字段一样在构造函数里面赋值。
用 Lambda 作为函数体 (Expression bodies on
method-like members)
平时总是有一些短小精悍的代码,但我们不得不把他们放到两个括号中,现在我们可以这
么写
Lambda 表达式用作属性 (Expression bodies on
property-like function members)
这种用法同样可以用于属性
字符串嵌入值 (String interpolation)
这个叫法有点怪,看个例子就明白了,上面那个 string.Format 其实可以这样写,不仅写
起来方便,而且可读性也非常好。
如果要用到格式控制,和以前一样加上就可以了。
Using 静态类 (Using static)
如果一个静态类里面是一堆方法,比如 Math 可以不用写类名,直接调用他的静态方法
有人说这有破坏面向对象的嫌疑,我倒觉得这让 C#在函数式编程上更进一步,至于到底
是怎样,time will tell.
值得一提的是,这种 using 也会引入扩展方法,之前 using System.Linq 会把这个命名
空间下所有的扩展方法引入,如果只需要一部分 (比如Enumerable ),这种用法会很
方便。
空值判断 (Null-conditional operators)
这种写法相信有非常多的朋友用过,经常为了一个是否为空的问题搞得代码非常难看,比
如视频里的那个
再举个例子,我们要获取一个列表的长度
这种写法真是太恶心了,在 C#6.0 中,我们可以这样写
从这里也可以看出这种操作符的一个规则:如果对象为空,则整个表达式的值为空。
后面的成员访问不限于方法,还可以是属性,索引器等。
给个实际应用的例子,在触发事件时,经常见到这样的写法,一个委托在调用前总是要判
断是否为空
现在我们可以这样
如果 PropertyChanged 为 null ,那这句就什么也不做。
nameof 表达式 (nameof expressions)
在方法参数检查时,经常会见到这样的代码
里面有那个 role 是我们手写的字符串,在给 role 改名时,很容易把下面的那个字符串忘
掉,C#6.0 解决了这个问题,看看新写法
带索引的对象初始化器 (Index initializers)
对象初始化器在 C#3.0 就已经有了,C#6.0 的对象初始化器加入了对索引器的支持,使得
字典一类的东西也可以轻松初始化
这是一个 Json.NET 使用的例子
异常筛选器 (Exception filters)
这个在 VB 和 F#中早就有的功能也加进来了,看看用法
在微软的文档中还给出了另一种用法,这个异常会在日志记录失败时抛给上一层调用者
catch 和 finally 中的 await (Await in catch and
finally blocks)
这是另一个和异常相关的特性,使得我们可以在 catch 和 finally 中等待异步方法,看微
软的示例
无参数和结构体构造函数 (Parameterless
constructors in structs)
在之前版本的 C#中是不允许结构体拥有无参构造函数的,在C#6.0 中是允许的,但需要
注意一点,通过 new 得到的结构体会被调用构造函数,而通过 default 得到的不会调用
看看这个例子
首先是一个结构体,通过两种不同的方式创建,然后输出
不见的功能
Primary constructor 和 out 参数定义变量那个不见了,有说法是 cut 掉了,微软真是纠
结。。
详情: Changes to the language feature set
总体感觉 C#6.0 加入的更多是语法糖,语言本身没有太多新的概念,语法糖的加入会让
C#程序员写出的代码更优美,更有生产力,希望 C#越做越好!
作者:朱恒成(Henry Charles ) (/henryzhu/ )
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同
意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
文档评论(0)