为什么第一,如果声明的评估,真的吗?我知道如果我使用"的"而不是"="则无法评估真实的。如果我代替串。空与"Foo"它不真实的。这两个串。空和"Foo"具有相同的类型字符串,那么,为什么一个评估为真正的和其他的没有?

    //this evaluates to true
    If Nothing = String.Empty Then

    End If

    //this evaluates to false
    If Nothing = "Foo" Then

    End If
有帮助吗?

解决方案

在VB.net没有为类型的默认值。该语言规范说,在节2.4.7:

  

没有什么特殊的文字;它没有一个类型,可转换为在类型系统中的所有类型,包括类型参数。当转换成特定类型的,这是该类型的默认值的等效。

所以,当你测试针对的String.Empty,没有什么是转换成一个字符串,其具有一个长度为0的是操作员应被用于对没有进行测试时,和String.Empty.Equals(没有)也将返回false

scroll top