C#之Null

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

 

C#之Null

上一篇:53 Stream API


下一篇:C# FileSystemWatcher文件监控实例