C的# 6.0新特性.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档