在C#和VB.net中的不同
在C#中当Nullable为Null时,可以正常判断 
==   \

如   a ==
b   当 a = null  一样可以正确判断
而在VB中,  当a 为
nothing时,则a=b  判断无法成立
如:

        Dim p1 As Nullable(Of Double)
        Dim p2 As Nullable(Of Double) = 10.0
        If (p1 = p2) Then    ‘ If (p1 <> p2) Then
            Me.Text = “OK”
        Else
            Me.Text = “no ok”
        End If

不管写成 p1=
p2还是p1<>p2,永远无法进入OK这一项.
只有使用Equals这个写法,整个表达式才正常.记在此处,以后要防范
 
 


Nullable使得普通的Struct类型有了Null值的可能,与数据库中的Null值可以匹配使用
使得普通值类型的数据操作与String类似,有Null值
 
 
在vb.net中可以使用Is Nothing来判断是否有值
但不能使用

Convert.IsDBNull 来判断


 Dim p1 As Nullable(Of Double)
        If (TypeOf (p1) Is DoubleThen
在VB中使用typeof
无法编译,提示值类型无法使用Typeof错误

 
        Dim p1 As Nullable(Of DateTime)
        Dim p2 As String = p1.ToString()
        Label1.Text = p2
–输出是空字符串
 

        Dim p1 As Nullable(Of DateTime) = DateTime.Now
        Dim p2 As String = p1.ToString()
        Label1.Text = p2
–输出是日期字符串

        Dim p1 As Nullable(Of Double)
        Dim p2 As String = p1.ToString()
        Label1.Text = p2

–输出是空字符串  
论证:当为Null时,输出空字符串
 
Nullable(of
*)  只能与Struct类型使用,所以,String类型不能一起使用
 

        Dim p1 As Nullable(Of Double) = 10.0
        p1 += 5
        Dim p2 As String = p1.ToString()
        Label1.Text = p2
–输出 15.0