.net - 为什么 string.IsNullOrWhiteSpace ("\0") 是假的

标签 .net string c#-4.0

我遇到了隐藏字符 \0 的问题这很像 string.IsNullOrWhiteSpace 方法不将其视为空白的“空白”。我想知道为什么这在 .NET 中以这种方式实现,是否有任何替代 string.IsNullOrWhiteSpace 可以正确处理空终止字符的方法?
提前致谢。

最佳答案

U+0000基本上不是空格。 char.IsWhitespace('\0')返回 false,它没有被列为空格...
IsNullOrWhitespace的空部分指的是字符串引用本身 - 不是内容,如果那是您的想法。

请注意,.NET 中的字符串在托管代码中在逻辑上不是“以空字符结尾的”,尽管在 CLR 级别实践中,出于互操作的目的,它们是。 (字符串知道它自己的长度,但为了更容易地使用需要空终止符的 native 代码,CLR 确保在字符串内容之后总是有一个 U+0000。)如果你最终得到包含 \0 的字符串你可能应该修复任何产生它的东西。

关于.net - 为什么 string.IsNullOrWhiteSpace ("\0") 是假的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31053831/

相关文章:

检查数组的第一个元素是否是 C 中的数字

c# - MemberwiseClone 与新对象

c#-4.0 - 我们可以在我们的项目中部署 IWSHRUNTIMELIBRARY 吗?

c# - 理解/可视化 C# 代码的工具

c# - 如何删除 Active Directory 组中的所有用户?

带有比较符号的 JavaScript 字符串会被忽略吗?

asp.net - 基准测试时 Razor 页面中的 BookSleeve Wait() 超时

c# - .NET 3.0 单元测试调用 .NET 2.0 时出现 System.MethodAccessException

c# - 如何创建可读流?

vb.net 拆分字符串的最后一部分