1.引言
无意中看到别人一行代码“a=a??-1”,问了一下度娘,才发现原来是这么个意思,于是总结了一下?在C#的用处,主要包含三个方面:三目运算符,可空值类型,null值合并运算符。文中若有纰漏或者错误,请留言指出,不必客气。
2.三目运算符(?:)
表达式?值B:值C;
三目运算中的?大概是我们最先接触的,?与:一起使用,若表达式为true则整个运算取结果值B,否则取值C,看看小面的一段代码:
//三木运算符
dynamic exObj = new ExpandoObject();
exObj.Name = "三木运算符";
exObj.Gender = false;
Console.WriteLine(string.Format("{0},性别:{1}", exObj.Name, exObj.Gender ? "男" : "女"));
3.可空值类型
【ValueType? Name】 等价于【System.Nullable< T >】
int? age = null;
Console.WriteLine(age.HasValue);
Console.WriteLine(age.GetValueOrDefault());
Console.WriteLine(age.GetValueOrDefault() == null);
Console.WriteLine(age == null);
(1)值类型后面紧跟?(int? a=null)后可以给值类型变量赋空值
(2)写法是System.Nullable< T >的简写(语法糖)
(3)判空,HasValue或者直接a==null
(4)Console.WriteLine(a.Value == null);如果a值为空,则引发 System.InvalidOperationException异常
4.null值合并运算符
【Type A=B??C】若B为空则A取值C,否则A取值B
int? age = null;
age = age ?? 25;
Console.WriteLine("age:" + age);
(1)B必须是可空的值类型或者引用类型
(2)null合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算