Почему первый оператор if имеет значение true? Я знаю, если я использую "is" вместо "=", то он не будет оценивать true. Если я заменил String.Empty на "Foo", он не будет равен true. И String.Empty, и Foo имеют один и тот же тип String, поэтому почему вы оцениваете значение true, а другое - нет?
//this evaluates to true
If Nothing = String.Empty Then
End If
//this evaluates to false
If Nothing = "Foo" Then
End If