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

Vb.net 字符串比较何时比较引用或值?,vb.net,Vb.net,所以,据我所知,字符串是一种引用类型。但在这样做的时候 Dim s1 As String = "hello" Dim s2 As String = New String(s1) MsgBox((s1 = s2).ToString) 结果是正确的,尽管它们是不同的参考 我的数据库中有一个关键字标记系统。它有一个共享注册表,以确保“hello”的所有实例都是对同一个“hello”实例的引用。然而,我突然想到,在进行过滤等操作时,比较2个“hello”可能会比较值,而不是执行

所以,据我所知,字符串是一种引用类型。但在这样做的时候

    Dim s1 As String = "hello"
    Dim s2 As String = New String(s1)
    MsgBox((s1 = s2).ToString)
结果是正确的,尽管它们是不同的参考

我的数据库中有一个关键字标记系统。它有一个共享注册表,以确保“hello”的所有实例都是对同一个“hello”实例的引用。然而,我突然想到,在进行过滤等操作时,比较2个“hello”可能会比较值,而不是执行更糟糕的引用。是这样吗?如果是这样,我将如何比较参考文献

编辑:额外问题:集合类中的.Contains方法如何?从我所看到的,他们也使用了覆盖的值比较。我是否需要创建自己的方法来检查集合是否具有相同的值字符串?

Equality方法定义String类的Equality运算符的操作。操作符依次调用静态Equals(String,String)方法,该方法执行顺序(区分大小写和区域性)比较


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

Dim s1 As String = "hello"
Dim s2 As String = s1
然后它将准确地返回
True

+1-MsgBox((s1是s2)。ToString)返回false。