我遇到了一个问题,其中不可见字符\0很像一个'空白',而string.IsNullOrWhiteSpace方法不将其视为空白。我想知道为什么以这种方式在.NET中实现它,并且string.IsNullOrWhiteSpace是否可以正确处理以空字符结尾的字符?
提前致谢。

最佳答案

U+0000基本上不是空格。 char.IsWhitespace('\0')返回false,未列为空白...
IsNullOrWhitespace的null部分指的是字符串引用本身,而不是内容,如果您正在考虑的话。

请注意,.NET中的字符串在托管代码中并不是逻辑上“以NULL终止”的,尽管实际上在CLR级别上它们是出于互操作目的。 (字符串知道其自身的长度,但是为了使使用期望终止符为null的 native 代码更容易,CLR确保在字符串内容之后始终存在U + 0000。)一个包含\0的字符串,您可能应该修复产生它的任何内容。

09-12 20:49