C#中的 ?、?. 、?:、??

  • Post author:
  • Post category:其他




1、可空类型修饰符(?)

可空类型修饰符(?),null-conditional operators。引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。为了使值类型也可为空,可以使用可空类型修饰符?来表示。表现形式为T?,也就是泛型

int i = null;     //不正确的写法,编译器会报错
int?      //这样就可以表示可空的整形



2、NULL检查运算符(?.)

NULL检查运算符是C#6.0新推出的特性,顾名思义,通过这个去检查对象是否为null,是程序在执行到不能为null的对象的时候不会报错。

listBox1.Items.Add(result.Text);    //当括号中的值为null时,程序会报错

//所以一般都会加上判断
 if (result != null)
 {
 	listBox1.Items.Add(result.Text);
 }


//通过使用 ?. 就可以使代码简洁
listBox1.Items.Add(result?.Text);



3、三元运算符(?:)

(?: )是C#中的三元运算符,其语法为:条件表达式?表达式1:表达式2。就是先是判断条件表达式中的条件结果(bool类型),如果是为true,则执行表达式1,如果结果是为false,则执行表达式2。可以理解为:

if(条件表达式)
{
	表达式1;
}
else
{
 	表达式2;
 }



4、 空合并运算符(??)

用于定义可空类型和引用类型的默认值。

如果此运算符的左操作数是否null,不为返回左操作数,否则返回右操作数。即a??b形式的空合并表达式要求a为可以为null的类型或引用类型。如果a不为null,则选择a;如果a为null,则直接选择b。可以直接理解 b 就是一个候补,当 a 为空才去选择 b。

int? a= null;
int b = 1;
b = a ?? 2;   //在这里因为a为null ,所以输出的结果b为右边的值2
int a = 3;
b = a ?? 2;   //在这里因为a不为null,所有输出的结果是a的值3



版权声明:本文为qq_43857510原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。