VB将字符串设置为空

时间:2015-07-22 14:42:15

标签: vb.net

当我希望它返回 FALSE 时,下面的代码会返回 TRUE

为什么返回 TRUE ?我期望没有将字符串的值设置为null,而不是空(根据msdn

CodeingGround sample

Module VBModule

    Sub Main()
        dim x as String
        x = nothing
        console.writeline(x = string.Empty)
    End Sub

End Module
  

没什么(Visual Basic)

     

表示任何数据类型的默认值。对于参考类型,   默认值为空引用。

*** **** EDIT Nothing = String.Empty (Why are these equal?)

VB.net中没有任何内容是类型的默认值。语言规范在2.4.7节中说明:

  

没有什么是特殊的文字;它没有类型而且是   可转换为类型系统中的所有类型,包括类型   参数。转换为特定类型时,它是等效的   该类型的默认值。

因此,当你对String.Empty进行测试时,Nothing被转换为一个长度为0的字符串.Is运算符应该用于测试Nothing,而String.Empty.Equals(Nothing)也将返回false

每次评论,

  

转换为特定类型时,它相当于   该类型的默认值。

字符串的默认值为null。我不明白为什么接受这个答案。

1 个答案:

答案 0 :(得分:2)

Push API

以上帖子清楚地解释了答案,感谢蒂姆·施梅特尔在评论部分找到上述帖子

Per Tim Schmeleters评论

从vb编译器调用它,因为文档在String.Equality运算符中声明