2014-04-10 92 views
1

所以,據我所知,字符串是一個引用類型。然而,這樣做什麼時候字符串比較比較引用或值?

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

結果的時候是真實的,即使它們是不同的引用

我有一個關鍵字類型的標籤系統在我的數據庫回事。它有一個共享註冊表來確保所有「hello」實例都是對「hello」實例的引用。然而,在我看來,在過濾等情況下,比較2個「你好」可能會反而比較這個值,而不是比較糟糕的參考。是這樣嗎?如果是這樣,我將如何比較參考?

編輯:獎金問題:集合類中的.Contains方法呢?從我可以看到他們也使用重寫值比較。我將不得不創建自己的方法來檢查集合是否具有相同的值字符串?

回答

2

您可以使用Is符來比較引用,即MsgBox((s1 Is s2).ToString),在這種情況下返回False。如果你有類似的東西:

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

然後它會返回True

+0

+1正確 - MsgBox((s1是s2).ToString)返回false。 –