字符串比较何时比较引用或值?

时间:2014-04-10 19:53:50

标签: vb.net

所以,据我所知,字符串是引用类型。然而,当这样做时

    Dim s1 As String = "hello"
    Dim s2 As String = New String(s1)
    MsgBox((s1 = s2).ToString)

结果是真的,即使它们是不同的引用

我的数据库中有一个关键字类型的标记系统。它有一个共享注册表,以确保所有“hello”实例都引用同一个“hello”实例。然而,我想到,当过滤等时,比较2个“你好”可能会比较这个值,而不是那个表现更差的参考。是这样的吗?如果是这样,我将如何比较参考文献呢?

编辑:奖金问题:集合类中的.Contains方法怎么样?从我所看到的,他们也使用覆盖值比较。我是否必须创建自己的方法来检查集合是否具有相同的值字符串?

2 个答案:

答案 0 :(得分:2)

您可以使用Is运算符来比较引用,即MsgBox((s1 Is s2).ToString),在这种情况下返回False。如果你有类似的东西:

Dim s1 As String = "hello"
Dim s2 As String = s1

然后它将返回True

答案 1 :(得分:0)

String overrides = operator to perform string comparison

  

String.Equality Operator

     

Equality方法定义String类的相等运算符的操作。反过来,运算符调用静态Equals(String,String)方法,该方法执行序数(区分大小写和区分大小写)的比较。

相关问题