C# 的可空合并运算符(??)

定义

??被称为【可空合并】运算符,是一个二目运算符,操作参数两枚,其完成的功能为对左参数判断之后进行赋值。

       返回结果:如果左操作数不为空,则返回左操作数本身;如果左操作书为空,则返回右操作数。

       格式:object1 ?? object2 

//伪代码示例
obejct NullCoalescingFunc( obejct object1,obejct obejct2)
{
     if(object1!=null)
           return object1;
      else
           return object2;
}

备注

可空类型(Nullable type)的变量既可以表示原类型取值范围内的值,也可以给其赋值为NULL(关于C#的可空类型是什么类型,此文暂且不论,读者自己百度先)。所以假如左操作数是一个值为NULL的可空类型变量时,就可以使用??运算符来返回适当的值(右操作数的值)。假如开发者尝试将一个可空类型变量的值赋给一个不可空类型的变量时,就会引起编译错误不通过。亦或者在前后上下文没有声明可空类型的变量时,开发者使用强制转换,会引发 InvalidOperationException 异常。

测试代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


class NullCoalesce
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        int? x = null;
        int y = x ?? -1;
        Console.WriteLine(string.Format("x={0},y={1}",x,y));
       
        int i = GetNullableInt() ?? default(int);
        Console.WriteLine(string.Format("i={0} ", i));

        string s = GetStringValue();
        Console.WriteLine(s ?? "Unspecified");

        Console.ReadKey();
    }
}

输出

image.png


详细可见这一篇:

https://www.runoob.com/csharp/csharp-nullable.html



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864