C#各版本新功能 C#7.2
高效安全的代码增强功能
它们旨在尽量减少值类型的复制,而不造成与引用类型使用相关的内存分配,进而提升性能
- 针对实参的 in 修饰符,指定形参通过引用传递,但不通过调用方法修改。 将 in 修饰符添加到参数是 源兼容的更改 。
- 针对方法返回的 ref readonly 修饰符,指示方法通过引用返回其值,但不允许写入该对象。 如果向某个值赋予返回值,则添加 ref readonly 修饰符是 源兼容的更改 。 将 readonly 修饰符添加到现有的 ref 返回语句是 不兼容的更改 。 它要求调用方更新 ref 本地变量的声明以包含 readonly 修饰符。
- readonly struct 声明,指示结构不可变,且应作为 in 参数传递到其成员方法。 将 readonly 修饰符添加到现有的结构声明是 二进制兼容的更改 。
- ref struct 声明,指示结构类型直接访问托管的内存,且必须始终分配有堆栈。 将 ref 修饰符添加到现有 struct 声明是 不兼容的更改 。 ref struct 不能是类的成员,也不能用于可能在堆上分配的其他位置。
编写高效安全代码
非尾随命名参数
正常使用即可,不用看;
数值数字的前导下划线
int binaryValue = 0b_0101_0101;
private protected 访问修饰符
private protected :访问限于包含类或当前程序集中派生自包含类的类型
// Assembly1.cs
// Compile with: /target:library
public class BaseClass
{
private protected int myValue = 0;
}
public class DerivedClass1 : BaseClass
{
void Access() //正确方法
{
myValue = 5; //可以正常访问
}
void Method1()
{
var baseObject = new BaseClass();
// baseObject.myValue = 5; // because myValue can only be accessed by classes derived from BaseClass.
}
}
protected internal :访问限于当前程序集或派生自包含类的类型
条件ref 表达式
ref var r = ref (arr != null ? ref arr[ 0 ] : ref otherArr[ 0 ]);
顶
收藏
关注
评论
作者:王思明
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss