可空类型 System.Nullable

C#中null值不能赋值给值类型,这里的值类型包括struct在内。原因是值类型不能包含引用,null作为一种“无”的引用当然不能被值类型所引用。在实际应用中这样会造成一些问题,假如现在一个数据int类型确实无法确定它的取值。这里就需要使用可空类型。

可空类型表示可被赋值为 null 值的值类型变量。无法创建基于引用类型的可空类型。(引用类型已支持 null 值。)。

int?:表示可空类型,就是一种特殊的值类型,它的值可以为null
用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0
int??:用于判断并赋值,先判断当前变量是否为null,如果是就可以赋役个新值,否则跳过
void Main()
{
  System.Nullable<int> i=null;
  Console.WriteLine(i.HasValue);
  Console.WriteLine(i);
  var t=i??0;
  Console.WriteLine(t);
  var s=(int?)null;  //System.Nullable<T>可简写为T?,
  Console.WriteLine(s);
  Console.WriteLine(i.GetType());//exception
  Console.WriteLine(i.Value);//exception
}
原文地址:https://www.cnblogs.com/writedownfor/p/2847610.html