It's a pity no-one told the VB team...
Public Sub TestStringEquality()
Dim someString As String
Assert.IsTrue(someString Is Nothing, "Of course someString is Nothing")
Assert.IsTrue(someString = String.Empty, "But it's also empty...")
Assert.IsTrue(String.Empty Is Nothing, "...so doesn't that mean that String.Empty = Nothing ?")
' last test fails
 And that's without getting into the whole GetHashCode() trauma: When (not) to override Equals?, The Rules for GetHashCode
 This is tongue-in-cheek - the Is operator isn't really equality, I know. It's 'samey'.