?可空类型修饰符
引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空:
string str= null; 正确
~~int num= null; 错误~~
**?**可空类型,使值类型可以为空。
表现形式:T?
int a; //a<>null
int? b=null; //b=null
int? c = b + 1; //c=null;
Console.WriteLine("c:"+c);
结果为空:c:
??空合并运算符
用于定义可空类型和引用类型的默认值:
如果 result = xx??yy 如果xx为空 返回yy ;如果xx不为空 返回xx
nt a=0; //a<>null
int? b=null; //b=null
int? c = b + 1; //c=null;
int d = b ?? a;
返回:0;
?: 三目运算(三元运算)
例子:xx?check1:check2; 如果xx为true,返回 check1否则返回 check2
int res = 4 > 3 ? 10 : 11;
int res2 = 3 > 4 ? 10 : 11;
返回res = 10; res2 = 11;
?. 不为null时执行后续方法
例子:
public delegate void TestDelegate(string str);
public static event TestDelegate testEvent;
int a=0; //a<>null
int? b=null; //b=null
int? c = b + 1; //c=null;
testEvent += WenHaoTest_testEvent;
if (c==null) {
testEvent?.Invoke("whq");
}
Console.WriteLine("c:"+c);
private static void WenHaoTest_testEvent(string str)
{
Console.WriteLine("TestEvent:" + str);
}