Null合并操作符:??
//如果操作数不是null,那么把它给我;否则的话,给我一个默认值。 //如果左边的表达式不是null,那么??右边的表达式不会被计算 string s1=null; string s2= s1 ?? "Nothing"; //也就是说,s1如果是null,那么直接就右侧表达式默认值“Nothing”
string s1="123"; string s2= s1 ?? "Nothing"; /也就是说,s1如果不是null,那么直接就返回值123
Null条件操作符:?.
StringBuilder sb=null; //?.其实就是三元表达式 string s=sb?.Tostring();//如果不加?.会直接报错 string s3=(sb==null?null:sb.Tostring()); 综合的一个事例: stringbuilder sb=null; string s=sb?.Tostring() ?? "Nothing";//最后结果是null
Nullable<> 可空值类型
Nullable<> 可空值类型 Nullable<Datetime> datetime=null; Datetime? datetime=null; Nullable<T>的常用的属性和方法: HasValue //null:false , 否则:True Value //底层值类型的值 GetValueOrDefault()//底层值类型的值或该类型默认的值 GetValueOrDefault(默认值)//底层值类型的值或该类型默认的值 int? num = 3; Console.WriteLine(num.HasValue);//true Console.WriteLine(num.Value);//3 int? num2 = null; Console.WriteLine(num2.HasValue);//false Console.WriteLine(num2.Value);//异常报错 Console.WriteLine(num2.GetValueOrDefault());//int的默认值是0 Console.WriteLine(num2.GetValueOrDefault(1));//这里num2是null值,给了一个指定的默认值1