VB.NET IsNot用于字符串比较

时间:2010-10-12 18:37:32

标签: vb.net string

If Object.Value IsNot "Something" Then

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

谢谢!

3 个答案:

答案 0 :(得分: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

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

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

答案 1 :(得分:3)

那将告诉你Object.Value和“Something”是否真的是同一个对象。

<99> 99.999%的时间,你不关心这一点。所有你关心的是,如果它们在语义上是平等的,那么它们都包含“Something”这个词。

答案 2 :(得分:1)

从文档中:“IsNot运算符确定两个对象引用是否引用不同的对象。”

因此,您不希望将字符串与它进行比较,因为两个相同的字符串实际上不太可能引用同一个对象。只有当它们是编译时常量,实习或同一变量的两个副本时才会发生这种情况。