C#中检查null的语法糖,实用+必备

🏆作者:科技、互联网行业优质创作者
🏆专注领域:.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造
🏆欢迎关注我(Net数字智慧化基地),里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你快速成长。升职+涨薪!!

c#处理null的几个语法糖,非常实用。(尤其是文末Dictionary那个案例,一定记得收藏)

??

如果左边是的null,那么返回右边的操作数,否则就返回左边的操作数,这个在给变量赋予默认值非常好用。


int? a = null;
int b = a ?? -1;
Console.WriteLine(b);  // output: -1

 ??=

当左边是null,那么就对左边的变量赋值成右边的


int? a = null;
a ??= -1;
Console.WriteLine(a);  // output: -1

?.

当左边是null,那么不执行后面的操作,直接返回空,否则就返回实际操作的值。

using System;
public class C {
    public static void Main() {
        string i = null;
        int? length = i?.Length;
        Console.WriteLine(length ?? -1); //output: -1
    }
}

?[]

索引器操作,和上面的操作类似

using System;
public class C {
    public static void Main() {
        string[] i = null;
        string result = i?[1];
        Console.WriteLine(result ?? "null"); // output:null
    }
}

注意,如果链式使用的过程中,只要前面运算中有一个是null,那么将直接返回null结果,不会继续计算。下面两个操作会有不同的结果。

using System;
public class C {
    public static void Main() {
        string[] i = null;
        Console.WriteLine(i?[1]?.Substring(0).Length); //不弹错误
        Console.WriteLine((i?[1]?.Substring(0)).Length) // System.NullReferenceException: Object reference not set to an instance of an object.
    }
}

一些操作


//参数给予默认值
if(x == null) x = "str";
//替换
x ??= "str";


//条件判断
string x;
if(i<3) 
    x = y;
else 
{  
    if(z != null) x = z; 
    else z = "notnull";
}
//替换
var x = i < 3 ? y : z ?? "notnull"


//防止对象为null的时候,依然执行代码
if(obj != null) 
    obj.Act();
//替换
obj?.Act();

//Dictionary取值与赋值
string result;
if(dict.ContainKey(key))
{
    if(dict[key] == null) result = "有结果为null";
    else result = dict[key];
}
else 
    result = "无结果为null";
//替换
var result= dict.TryGetValue(key, out var value) ? value ?? "有结果为null" : "无结果为null";

🏆欢迎关注我(Net数字智慧化基地),里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你快速成长。升职+涨薪!!
🏆再分享一个全网最全.NET/C#视频学习教程,能让你走遍初级、中级、高级、架构师、CTO的所有路径。点击下方卡片领取。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值