C#7.2 新增功能
C# 7.2 又是一个单点版本,它增添了大量有用的功能。 此版本的一项主要功能是避免不必要的复制或分配,进而更有效地处理值类型。
C# 7.2 使用语言版本选择配置元素来选择编译器语言版本。
利用 7.2 中引入的语言功能,可在使用引用语义时处理值类型。 它们旨在尽量减少值类型的复制,而不造成与引用类型使用相关的内存分配,进而提升性能。 功能包括:
- 针对实参的
in修饰符,指定形参通过引用传递,但不通过调用方法修改。 将in修饰符添加到参数是源兼容的更改。 - 针对方法返回的
ref readonly修饰符,指示方法通过引用返回其值,但不允许写入该对象。 如果向某个值赋予返回值,则添加ref readonly修饰符是源兼容的更改。 将readonly修饰符添加到现有的ref返回语句是不兼容的更改。 它要求调用方更新ref本地变量的声明以包含readonly修饰符。 readonly struct声明,指示结构不可变,且应作为in参数传递到其成员方法。 将readonly修饰符添加到现有的结构声明是二进制兼容的更改。ref struct声明,指示结构类型直接访问托管的内存,且必须始终分配有堆栈。 将ref修饰符添加到现有struct声明是不兼容的更改。ref struct不能是类的成员,也不能用于可能在堆上分配的其他位置。
可以在编写安全高效的代码中详细了解所有这些更改。
方法调用现可使用位于位置参数前面的命名参数(若这些命名参数的位置正确)。 有关详细信息,请参阅命名参数和可选参数。
C# 7.0 中实现了对数字分隔符的支持,但这不允许文字值的第一个字符是 _。 十六进制文本和二进制文件现可以 _ 开头。例如:
int binaryValue = 0b_0101_0101;
新的复合访问修饰符:private protected 指示可通过包含同一程序集中声明的类或派生类来访问成员。 虽然 protected internal 允许通过同一程序集中的类或派生类进行访问,但 private protected 限制对同一程序集中声明的派生类的访问。
有关详细信息,请参阅语言参考中的访问修饰符。
ref var r = ref (arr != null ? ref arr[] : ref otherArr[]);
变量 r 是对 arr 或 otherArr 中第一个值的引用。
有关详细信息,请参阅语言参考中的条件运算符 (?:)。
C#7.2 新增功能的更多相关文章
- ADO.NET 中的新增功能
ADO.NET 中的新增功能: .NET Framework (current version) 以下是 .NET Framework 4.5 中 ADO.NET 的新增功能. SqlClient D ...
- .NET Framework3.0/3.5/4.0/4.5新增功能摘要
Microsoft .NET Framework 3.0 .NET Framework 3.0 中增加了不少新功能,例如: Windows Workflow Foundation (WF) Windo ...
- 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能
[源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...
- PHP V5.2 中的新增功能,第 1 部分: 使用新的内存管理器
PHP V5.2:开始 2006 年 11 月发布了 PHP V5.2,它包括许多新增功能和错误修正.它废止了 5.1 版并被推荐给所有 PHP V5 用户进行升级.我最喜欢的实验室环境 —— Win ...
- WPF4.5 中的新增功能和增强功能的信息
本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...
- .NET Framework 4.5、4.5.1 和 4.5.2 中的新增功能
.NET Framework 4.5.4.5.1 和 4.5.2 中的新增功能 https://msdn.microsoft.com/zh-cn/library/ms171868.aspx
- openstack【Kilo】汇总:包括20英文文档、各个组件新增功能及Kilo版部署
OpenStack Kilo版本发布 20英文文档OpenStack Kilo版本文档汇总:各个操作系统安装部署.配置文档.用户指南等文档 Kilo版部署 openstack[Kilo]入门 [准备篇 ...
- hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档
相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...
- cloudstack4.4新增功能前瞻
cloudstack4.4.0新功能前瞻 转载请注明地址:http://blog.csdn.net/zt689/article/details/37698989 1. cloudstack4.4. ...
- SQL Server 2016 Alwayson新增功能
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/ 概述 SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本.接下来就开看看2016在Alw ...
随机推荐
- 年度调查 看看 2016 年 Go 语言调查结果
Go 语言官方博客公布了 2016 年 Go 语言使用调查. 在 3,595 名被调查者中,89% 称他们在工作中或工作之外用 Go 编程:63% 称他们的工作是 Web 开发,但只有 9% 的人只从 ...
- Openssl - Static libraries (w32, mingw) 以及对Qt静态编译时的设置
Openssl static libraries created for Windows 32bit using MinGW compiler Compiled with: ./Con ...
- 插件化一(android)
插件化设计概述(android) 一. 模块划分 Basic模块包括:初始化接口.插件加载接口.插件更新接口和埋点接口. a) 初始化接口:完成一些必要的初始化 ...
- Delphi类与方法(几十篇)
http://www.cnblogs.com/del/category/114896.html
- Qt5.4.2Mingw编译配置opencv2.4.9
1 下载所需工具 (1)qt-opensource-windows-x86-mingw491_opengl-5.4.2.exe 842M 下载地址https://download.qt.io/arc ...
- 监控打印机(使用OpenPrinter,WaitForPrinterChange API函数)
uses Winapi.WinSpool; procedure TForm1.Button1Click(Sender: TObject);varpi2: PRINTER_INFO_2;hPrinter ...
- Linux用户和权限
用户和用户组管理 linux使用用户和组来限制资源的使用. 在linux上运行任何程序或命令都要以一个具体的用户来运行,这个用户的权限决定了相应的程序能访问的资源和能执行的操作. 用户相关命令 组是用 ...
- Codility------CyclicRotation
Task description A zero-indexed array A consisting of N integers is given. Rotation of the array mea ...
- [2017.02.15] 《C++Primer5》 复习笔记
编程语言主要是提供一个框架,用计算机能够处理的方式来表达问题的解决方法. 自定义数据类型class的基本思想是数据抽象dataabstraction和封装encapsulation.数据抽象是一种依赖 ...
- 每日一问:到底为什么属性动画后 View 在新位置还能响应事件
在 Android 开发中,我们难免会使用动画来处理各种各样的动画效果,以满足 UI 的高逼格设计.对于比较复杂的动画效果,我们通常会采用著名的开源库:lottie-android,或许你会对 lot ...