• 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 ]);
    
  • 相关阅读:
    37-Data Volume 之 bind mount
    Python encode和decode
    Python迭代器,生成器(iterator,generator)详解
    Python递归函数
    pandas.DataFrame的pivot()和unstack()实现行转列
    Python XML解析之DOM
    Python XML解析之ElementTree
    Oracle 12c用户和安全管理
    Oracle 12c RAC 静默安装文档
    Oracle 12c RAC 安装文档
  • 原文地址:https://www.cnblogs.com/maanshancss/p/7be07e2502df85536ab84a9490162a06.html
Copyright © 2020-2023  润新知