我遇到了一个问题,其中不可见字符\0
很像一个'空白',而string.IsNullOrWhiteSpace方法不将其视为空白。我想知道为什么以这种方式在.NET中实现它,并且string.IsNullOrWhiteSpace是否可以正确处理以空字符结尾的字符?
提前致谢。
最佳答案
U+0000基本上不是空格。 char.IsWhitespace('\0')
返回false,未列为空白...IsNullOrWhitespace
的null部分指的是字符串引用本身,而不是内容,如果您正在考虑的话。
请注意,.NET中的字符串在托管代码中并不是逻辑上“以NULL终止”的,尽管实际上在CLR级别上它们是出于互操作目的。 (字符串知道其自身的长度,但是为了使使用期望终止符为null的 native 代码更容易,CLR确保在字符串内容之后始终存在U + 0000。)一个包含\0
的字符串,您可能应该修复产生它的任何内容。