为什么String.IsNullOrWhiteSpace(vbNullChar)= False?

时间:2019-02-28 08:48:17

标签: .net string vb.net char .net-4.0

我正在使用3rd party库从机器变量中获取数据。数据返回的是字符串类型,因此在请求数据后,我确认它不是像这样的空字符串:

Not String.IsNullOrWhiteSpace(data)

但是,我的程序失败了,我意识到,当机器中的变量为空时,上面的函数将返回True。

通过调试,我注意到当变量为空时,第3方库中的函数返回vbNullChar,而当我希望其评估为{{时,则返回String.IsNullOrWhiteSpace(vbNullChar) 1}}就像False一样。

那么我唯一的检查方法如下吗?

True

1 个答案:

答案 0 :(得分:5)

因为您要在此处比较的两件事是不同“空”事物。

String.IsNullOrWhiteSpace在以下情况下返回true

  • 传递给该方法的引用为null
  • 或...非null字符串中的每个字符都被归为空白字符(如果字符串的长度为0,则“每个字符”为true)

在这种情况下,您尝试传递都不为Constants.vbNullChar的字符串,它是由1个字符组成的字符串,\0字符,未归类为空白。

另一方面,

Constants.vbNullStringnull引用,String.IsNullOrWhiteSpace处理得很好。


关于如何处理此具体问题,我将在获得结果后立即从vbNullChar替换为nullvbNullString),这样就不得不只检查了一个地方。

此外,如果您返回一个字符串,它是否以该\0字符结尾?如果是这样,那么您可能也希望将其删除。