[.NET Concept][VB.NET]字符串 = Nothing V.S 字符串 is Nothing

[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