• C#中 ?? 的用法


    ??含义:如果 ?? 运算符的左操作数非 null,该运算符将返回左操作数,否则返回右操作数。

    如果不赋予初值,C#的变量是不允许直接使用的。
    但有的时候,让值的类型为空是非常有用的,
    比如三态bool,其中一个状态便是未给定值。

    泛型使用System.NullAble<T>提供了类型值为空的一种方式。
    System.NullAble<T> nullAbleInt;
    因为太常用,C#特意给了一个语法快捷
    int? nullAbleInt;
    简单的例子:
    int? nVal1 = new int?();
    int? nVal2 = null;
    int? nVal3 = 3;
    Console.WriteLine(nVal1); // 输出null
    Console.WriteLine(nVal2); // 输出null
    Console.WriteLine(nVal3); // 输出3

    原则:null与任何数数学运算结果为null,null bool 操作任何值结果为 null。

    为了减少可空类型的代码量,遇到null的时候
    C#提供了??操作符来获取如果为空的默认值。
    static void Main(string[] args)
    {
    int? nVal1 = null;
    int? nVal2 = 5;
    // nVal1为空,相乘后还是null,输出0作为默认值
    Console.WriteLine(2 * nVal1 ?? 0);
    // nVal2非空,取计算值输出,输出10
    Console.WriteLine(2 * nVal2 ?? 0);
    }

    再举一个实例:

            /// <summary>
            /// 获取上次配置
            /// </summary>
            public static UploadConfig Config
            {
                get
                {
                    //如果 ?? 运算符的左操作数非 null,该运算符将返回左操作数,否则返回右操作数。
                    //本例中,即如果_config不为null的话,直接返回,如果为null的话,进行实例化,再返回
                    return _config ?? (_config = new UploadConfig()
                    {
                        RootUploadPath = "/temp/excel/",
                        Storage = StorageType.SameDirectory,
                        AllowExt = ".xls",
                        MaxSize = 1024000
                    });
                }
            }

  • 相关阅读:
    poj3032
    poj2603
    poj2019
    poj2369
    AVI 录像功能压缩算法设置
    陆其明的新书《脚本驱动的应用软件开发方法与实践》
    c# 动态编译
    !!!分享:把bmp格式的图片转化为AVI格式的视频操作的封装类其中对于AVI API的函数的使用较为完整
    视频文件格式和视频编码方式
    activex 控件的id 定义位置+使用ocx控件的客户端程序中对控件定义的文件中控件id定义的位置
  • 原文地址:https://www.cnblogs.com/yxyht/p/2817688.html
Copyright © 2020-2023  润新知