VB.NET IsNot用于字符串比较

Sco*_*ott 2 vb.net string

If Object.Value IsNot "Something" Then
Run Code Online (Sandbox Code Playgroud)

你可以这样做,还是在某些情况下它不起作用?不确定这是否只应用于整数和布尔值.

谢谢!

Jar*_*Par 5

我不确定这是否有效,但如果确实如此,那么使用它将是一个非常糟糕的主意.VB.Net中的IsIsNot运算符进行参考比较.在处理String值时,您几乎总是希望通过=和进行值比较<>.

参考比较会告诉您它是否真正指向同一个对象.在.Net中,很可能在2个对象中捕获相同的相同字符串,从而允许混淆如下情况

Function CreateFoo() As String
  return "foo"
End Function

Dim str1 = "foo"
Dim str2 = CreateFoo()
if str1 Is str2 Then
  ' This is possible
Else
  ' This is also possible
End If
Run Code Online (Sandbox Code Playgroud)

价值比较在这里提供了更多的理智

Dim str1 = "foo"
Dim str2 = CreateFoo()
if str1 = str2 Then
  ' This will run
Else
  ' This is simply not possible
End If
Run Code Online (Sandbox Code Playgroud)