In .net 2.0 gibt es einen neuen Nullable-Typ, mit dem Basiswerttypen wie Nullwerte zugewiesen werden können
int? k = 3;//Ein nullbarer Werttyp (als Nulltyp bezeichnet)
int m = null;//error
int? j = null;//Erfolg Aus dem obigen Beispiel können wir ersehen, dass in C# nach dem Werttyp ein ?-Zeichen hinzugefügt werden kann, während in VB.NET Sie können dies tun.
Dim dtmVarName As Nullable(Of DateTime)
Dim intVarName As Nullable(Of Integer)
Dim bVarName As Nullable(Of Boolean)
Es ist zu beachten, dass der Nulltyp kein neuer .NET-Datentyp ist.
Tatsächlich ist der Nulltyp eine generische Klasse System.Nullable<T>, die in der .NET-Bibliothek definiert ist, wobei T ein ersetzbarer Werttyp ist.
int? k = 3; kann auch geschrieben werden als System.Nullable<int> k = 3;
Die Operationen werden durch Operatorüberladung dieser Klasse implementiert.
Mit hasvalue können Sie ermitteln, ob dem leeren Typ ein Wert zugewiesen wurde,
wenn (dtmVarName.HasValue)
{
//...etwas tun
}.
http://www.cnblogs.com/jackyrong/archive/2006/08/26/486796.html