?? 是比较简单的了.如果??运算符左操作数不是null,那么就返回左操数,否则,就返回右操作数.
? 用于给变量设置初始值的时候,给变量赋值为null.
可空类型:对于一个类型,如果既可以给它分配一个值,也可以给它分配null,我就就说这个类型是可空的.例如,string的引用类型就是可空的.而类似int32的值类型不是可空类型。由于值类型的容量只够表示适合该类型的值,因为它不可为空;值类型没有表示空值所需的额外容量。
但是如果你想将int32之类的值类型设置为null,就需要用到 ? 。
Nullable<T>泛型结构:表示基础类型为值类型的对象,值类型与引用类型一样也可以分配null。Nullable<T> 结构支持只将一个值类型用过可空类型。
public int? a= null;
public int getNum()
{
return this.a?? 0; //如果使用int a 定义的话,a因为不能为null,所以会报错
}