zoukankan      html  css  js  c++  java
  • c# 运算符 ? ??

     static void Main(string[] args)
            {
                //空合并行运算??
                /*?? 提供了一种快捷方式,可以在处理可空类型和引用类型时表示null值的可能性,这个运算符放在
                 两个操作数之间,第一个操作数必须是一个可空类型或者引用类型,第二个操作数必须与第一个操作数
                 类型相同,或者可以隐式转换为第一个操作数的类型
                 1、如果第一个操作数不是null,整个表达式就等于第一个操作数的值;
                 2、如果第一个操作数是null, 整个表达式就等于第二个操作数的值
                */
                int? a = null;
                int b;
                b = a ?? 10;
                a = 3;
                Console.WriteLine(b); // 10
                b = a ?? 10;
                Console.WriteLine(b); //3
    
                //空值传播运算符 object?.method;
                /*
                 * 生产环境中代码会检查验证变量空值条件,访问变量时需要检查判断是否为null,否则会抛出NullReferenceException, 但是有时很容易忘记这样的检查,可以利用空值传播的特性来简化代码
                 */
                int? d = 2;
                Console.WriteLine(d?.ToString().GetType().Name); // String
                d = null;
                Console.WriteLine(d?.ToString().GetType().Name); // null
                
                //当空值传播类型访问int类型的属性时,不能将结果直接分配给int,因为结果可能为null,可以将结果分配为可空的int?
                //当然我们也可以结合空合并行运算符的特性??来实现
    
                Person p = new Person();
                int e = p?.Age ?? 666;
                Console.WriteLine(e); //123
    
                p = null;
                e = p?.Age ?? 666;
                Console.WriteLine(e); //666
    
                //当然也可以将这种特性用于数组的可空判断
    
                int[] arr = null;
                
                Console.WriteLine(arr?[0]); //null
    
                arr = new[] {1, 2, 3};
    
                Console.WriteLine(arr?[0]); //1
                Console.ReadKey();
  • 相关阅读:
    Netty相关知识积累
    Java内存管理
    使用nginx-upload-module搭建文件上传服务器
    mysql 5.7自动安装脚本
    CDH5集群搭建
    Linux常用命令
    编译原理要点四
    编译原理要点三
    编译原理要点二:
    编译原理要点
  • 原文地址:https://www.cnblogs.com/alplf123/p/10033550.html
Copyright © 2011-2022 走看看