[VB.NET]字串 = Nothing V.S 字串 is Nothing
今天回答網友問題時,由於一時筆誤,把本來要寫『字串 is Nothing』的地方錯打成『字串 = Nothing』,造成程式怎麼看就是看不出哪裡邏輯有問題,最後才注意到這邊打錯。
發現後覺得很神奇,因為我一直以為寫成『字串 = Nothing』會編譯錯誤的,沒想到它竟然能過。但也由於它能過的關係,導致找了半天找不到問題所在。而問題就在於若是使用『字串 is Nothing』來判斷的話,須要字串的值真的是Nothing才會成立。而使用『字串 = Nothing』來判斷的話,則判斷時會把Nothing與String.Empty視為相等,因此就算是字串為空字串該判斷條件也會成立。
簡單的示意範例如下:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(IsStringNothing1(""))
MsgBox(IsStringNothing2(""))
End Sub
Private Function IsStringNothing1(ByVal str As String) As Boolean
Return str = Nothing
End Function
Private Function IsStringNothing2(ByVal str As String) As Boolean
Return str Is Nothing
End Function
End Class