and*_*ubi 0 .net vb.net string .net-4.0 char
我正在使用第三方库从机器的变量中获取数据.数据返回一个字符串类型,所以在请求数据后,我正在验证它不是一个空字符串,如下所示:
Not String.IsNullOrWhiteSpace(data)
Run Code Online (Sandbox Code Playgroud)
但是,我的程序失败了,我意识到当机器中的变量为空时,上面的函数返回True.
通过调试,我注意到,在第三方库的函数返回vbNullChar时,变量是空的,String.IsNullOrWhiteSpace(vbNullChar)计算结果为False,当我希望它以评估True为String.IsNullOrWhiteSpace(vbNullString)一样.
那么我唯一的选择是检查如下?
Not String.IsNullOrWhiteSpace(data) AndAlso data <> vbNullChar
Run Code Online (Sandbox Code Playgroud)
因为这里要比较的两件事是不同的 "空"事.
String.IsNullOrWhiteSpace返回true如果:
nullnull字符串的每个字符都被归类为空白字符(如果字符串的长度为0,则"每个字符"都为真)在这种情况下,你试图传入Constants.vbNullChar既不是,它是一个由1个字符组成的字符串,该\0字符未被归类为空白.
Constants.vbNullString另一方面,是一个null参考,它String.IsNullOrWhiteSpace处理得很好.
至于你应该如何处理这个具体问题,我会做从更换vbNullChar到null(vbNullString)获得结果后,立即让这一奇怪现象必须检查只有一个地方.
另外,如果你找回一个字符串,它是否以这个\0字符结尾?如果是这样,那么你可能也想删除它.