C#中检查null的语法糖,非常实用原创
金蝶云社区-云社区用户26064194
云社区用户26064194
2人赞赏了该文章 248次浏览 未经作者许可,禁止转载编辑于2023年01月29日 15:59:25
C#中检查null的语法糖,非常实用
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";


图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0