所以,据我所知,字符串是引用类型。然而,当这样做时
Dim s1 As String = "hello"
Dim s2 As String = New String(s1)
MsgBox((s1 = s2).ToString)
结果是真的,即使它们是不同的引用
我的数据库中有一个关键字类型的标记系统。它有一个共享注册表,以确保所有“hello”实例都引用同一个“hello”实例。然而,我想到,当过滤等时,比较2个“你好”可能会比较这个值,而不是那个表现更差的参考。是这样的吗?如果是这样,我将如何比较参考文献呢?
编辑:奖金问题:集合类中的.Contains方法怎么样?从我所看到的,他们也使用覆盖值比较。我是否必须创建自己的方法来检查集合是否具有相同的值字符串?
答案 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
Equality方法定义String类的相等运算符的操作。反过来,运算符调用静态Equals(String,String)方法,该方法执行序数(区分大小写和区分大小写)的比较。