C# 7.2 又是一个单点版本,它增添了大量有用的功能。 此版本的一项主要功能是避免不必要的复制或分配,进而更有效地处理值类型。

C# 7.2 使用语言版本选择配置元素来选择编译器语言版本。

01 安全高效的代码的增强功能

利用 7.2 中引入的语言功能,可在使用引用语义时处理值类型。 它们旨在尽量减少值类型的复制,而不造成与引用类型使用相关的内存分配,进而提升性能。 功能包括:

  • 针对实参的 in 修饰符,指定形参通过引用传递,但不通过调用方法修改。 将 in 修饰符添加到参数是源兼容的更改
  • 针对方法返回的 ref readonly 修饰符,指示方法通过引用返回其值,但不允许写入该对象。 如果向某个值赋予返回值,则添加 ref readonly 修饰符是源兼容的更改。 将 readonly 修饰符添加到现有的 ref 返回语句是不兼容的更改。 它要求调用方更新 ref 本地变量的声明以包含 readonly 修饰符。
  • readonly struct 声明,指示结构不可变,且应作为 in 参数传递到其成员方法。 将 readonly 修饰符添加到现有的结构声明是二进制兼容的更改
  • ref struct 声明,指示结构类型直接访问托管的内存,且必须始终分配有堆栈。 将 ref 修饰符添加到现有 struct 声明是不兼容的更改。 ref struct 不能是类的成员,也不能用于可能在堆上分配的其他位置。

可以在编写安全高效的代码中详细了解所有这些更改。

02 非尾随命名参数

方法调用现可使用位于位置参数前面的命名参数(若这些命名参数的位置正确)。 有关详细信息,请参阅命名参数和可选参数

03 数值文字中的前导下划线

C# 7.0 中实现了对数字分隔符的支持,但这不允许文字值的第一个字符是 _。 十六进制文本和二进制文件现可以 _ 开头。例如:

int binaryValue = 0b_0101_0101;
04 private protected 访问修饰符

新的复合访问修饰符:private protected 指示可通过包含同一程序集中声明的类或派生类来访问成员。 虽然 protected internal 允许通过同一程序集中的类或派生类进行访问,但 private protected 限制对同一程序集中声明的派生类的访问。

有关详细信息,请参阅语言参考中的访问修饰符

05 条件 ref 表达式
条件表达式可能生成 ref 结果而不是值。 例如,你将编写以下内容以检索对两个数组之一中第一个元素的引用:
ref var r = ref (arr != null ? ref arr[] : ref otherArr[]);

变量 r 是对 arr 或 otherArr 中第一个值的引用。

有关详细信息,请参阅语言参考中的条件运算符 (?:)

最新文章

  1. 纯CSS3实现动态火车行驶特效
  2. hzwer模拟赛 虫洞
  3. Python-7 列表list
  4. 使用animate()的时候,有时候会出现移进移出的闪动问题
  5. Java SE 第十六讲----面向对象特征之多态
  6. poj2528(线段树+离散化)Mayor's posters
  7. Biztalk2010安装及配置问题集
  8. Extending your SharePoint 2007 site with Microsoft ASP.NET AJAX 3.5
  9. Mongodb高级查询【二】
  10. ABP文档笔记 - 配置、设置、版本、功能、权限
  11. 手机QQ公众号亿级消息实时群发架构
  12. Problem 2: Even Fibonacci numbers
  13. PHP实用代码片段(二)
  14. 非常好的一篇对linux信号(signal)的解析 (转载)【转】
  15. HDU 1074 (DP + 状态压缩)
  16. [转]magento性能优化的教程(非常详细)
  17. MySQL案列之主从复制出错问题以及pt-slave-restart工具的使用
  18. eos节点启动源码分析
  19. 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯
  20. Eclipse代码注释模板-code template

热门文章

  1. 淘宝开源Key/Value结构数据存储系统Tair技术剖析
  2. XP下安装ubuntu
  3. JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember(转载)
  4. 使用熔断器仪表盘监控(hystrix)
  5. hadoop之hive&hbase互操作
  6. HTML连载11-HTML中被废弃的标签&字符实体
  7. 第二章 python如何运行程序
  8. DHCP服务部署流程
  9. apache虚拟主机防止php网页木马vhost.conf文件配置
  10. 01-pymysql模块的安装