C# 中 ??、?、?:、?.、?[]

?

可空类型(可为null)

在C#中 引用类型(class) 可使用null表示为空, 则值类型(struct)不可以使用null表示为空必须有默认值

所以在类型后面加?表示可为空

string str = null; //
int num = null;    //×
int? num2 = null;  //

 

?.

null检测

1.获取一个类型转为string的长度   如果test.ToString()返回的是null则获取Length的时候就会出现空指针异常

2.使用?.Length可使用null检测  如果test.ToString()返回的是null则不会再执行.Length, 但是会返回null但是int  不能接收null类型

3.把类型改成 int? 则可以接收null类型

/*1.*/ int length = test.ToString().Length;
/*2.*/ int length = test.ToString()?.Length;
/*3.*/ int? length= test.ToString()?.Length;

 

??

空合并运算符

当??前的值为null时则返回??后面的值,不是null则返回本身(??前的)

string str = null;
string str2 = str ?? "test";

?:

三元表达式

x是表达式(返回值为bool的,如1==1之类的)

如果x为true时则 返回y否 则返回z

注意的是y和z的类型要一致或者是父子关系

x?y:z

 

?[]

算是null检测,不会检测长度

int[] nums = null;
int? num = nums?[0]; //返回null

nums = new int[2];
num = nums?[3];      //报错
posted @   WB-TT  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示