我们都知道在C# 当中,有两种数据类型:值类型和引用类型。
在我们平常编程中,经常写例如下面的代码:
int count=0;
string nullStr=null;
值类型的数据不能为null,而引用类型的数据可以为null。
//即 int number=null; //这条语句是不能通过编译的
因为int是值类型。而string 是引用类型。
可是当我们想知道一个值类型在程序中,是否已经赋值?我们却不能用 这条语句判断:
if(number!=null)
但是,C#中还有种机制,解决这类问题:通过在值类型后面加上问号。
int? number=null;
注意: 这种机制只支持值类型,对于引用类型无意义。
有个类叫Nullable类,支持可为其分配 空引用(在 Visual Basic 中为 Nothing) 的值类型。引用类型,无法继承此类。