The code below returns TRUE when I expected it to return FALSE.
Why does it return TRUE? I Expect nothing to set the value of the string to null, not empty (According to msdn)
Module VBModule
Sub Main()
dim x as String
x = nothing
console.writeline(x = string.Empty)
End Sub
End Module
Nothing (Visual Basic)
Represents the default value of any data type. For reference types, the default value is the null reference.
***EDIT**** Nothing = String.Empty (Why are these equal?)
Nothing in VB.net is the default value for a type. The language spec says in section 2.4.7:
Nothing is a special literal; it does not have a type and is convertible to all types in the type system, including type parameters. When converted to a particular type, it is the equivalent of the default value of that type.
So, when you test against String.Empty, Nothing is converted to a string, which has a length 0. The Is operator should be used for testing against Nothing, and String.Empty.Equals(Nothing) will also return false.
Per then comment,
when converted to a particular type, it is the equivalent of the default value of that type.
The default value for a string is null. I dont understand why that answer was accepted.