C# 主要运算符中的成员访问

Posted cjygrow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 主要运算符中的成员访问相关的知识,希望对你有一定的参考价值。

    在开发过程中,我遇到了一种null 条件成员访问的写法,开始不太理解,之后专门查了微软的官方文档,下面是具体内容:

    三种成员访问的三种形式

        (1)x.y:成员访问。

        (2)x?.y:null 条件成员访问。 如果左操作数计算结果为 null,则返回 null

        (3)x?[y]:null 条件数组元素或类型索引器访问。 如果左操作数计算结果为 null,则返回 null。  

    其中,我主要介绍一下第二和第三种,x?.y以及x?[y]的语法:Null 条件运算符在 C# 6 及更高版本中可用,仅当操作数的计算结果为非 null 时,null 条件运算符才会将成员访问 ?. 或元素访问 ?[] 运算应用于其操作数。 如果操作数的计算结果为 null,则应用运算符的结果为 null。 Null 条件成员访问运算符 ?. 也称为 Elvis 运算符。更多

 

       具体实例:

  

namespace ConsoleApp_Test

    delegate int NumChange(int n);//定义委托
    class Program
    
        static int num = 10;
        public static int AddNum(int n)
        
            num += n;
            return num;
        


        static void Main(string[] args)
        
            //委托是null时
            NumChange nc = new NumChange(AddNum);
            nc = null;
            int? result = nc?.Invoke(1);

            //委托不为null时
            NumChange nc1 = new NumChange(AddNum);
            int? result1 = nc1?.Invoke(1);

            //输出结果
            Console.WriteLine(string.Format("第一个结果:0,第二个结果:1", result, result1));


            Console.ReadKey(); 
        
     
    

  总结:Null 条件运算符在 C# 6 及更高版本中可用,主要应用在委托为空的判断,保证线程安全。

  以上就是今天分享的内容,希望可以帮助大家!

    

 

以上是关于C# 主要运算符中的成员访问的主要内容,如果未能解决你的问题,请参考以下文章

范围解析运算符 :: 与成员访问运算符 。在 C# 中

C#对继承的理解

C#访问修饰符

c# 中的泛型 & 访问 T 的静态成员

C#访问派生类中的受保护成员[重复]

在开发C#程序过程中,如果定义的类不写访问修饰符,则类默认的访问类型是