En .net 2.0, hay un nuevo tipo que acepta valores NULL, que se puede usar para asignar valores nulos a tipos de valores básicos, como
int? k = 3;//Un tipo de valor que acepta valores NULL (denominado tipo nulo)
int m = nulo;//error
int? j = null;// Éxito En el ejemplo anterior, podemos ver que se puede definir un tipo de valor que acepta valores NULL después del tipo de valor. En C#, se agrega un signo? puede hacer esto
Dim dtmVarName As Nullable(Of DateTime)
Dim intVarName As Nullable(Of Integer)
Dim bVarName As Nullable(Of Boolean)
Cabe señalar que el tipo nulo no es un nuevo tipo de datos .NET.
De hecho, el tipo nulo es una clase genérica System.Nullable
int? k = 3; también se puede escribir como System.Nullable
Las operaciones se implementan mediante la sobrecarga de operadores de esta clase.
Puede usar hasvalue para determinar si al tipo vacío se le ha asignado un valor
if (dtmVarName.HasValue)
{
//...do algo
}
http://www.cnblogs.com/jackyrong/archive/2006/08/26/486796.html