我正在玩 派克斯 它传递给我的方法的参数之一是 "\0".

这意味着什么?我的猜测是一个空字符串("")基于我的方法的内容。但是,如果是相同的那么为什么不直接使用 "" 代替 "\0"?

有人知道这是什么吗?

有帮助吗?

解决方案

'\0' 是一个“空字符”。它用于终止 C 和 C++ 某些部分中的字符串。Pex 正在进行测试以查看您的代码如何处理空字符,可能会寻找 毒害空字节 安全漏洞。

大多数 C# 代码无需担心;但是,如果将字符串传递给非托管代码,则可能会遇到问题。

编辑:

只是为了明确...Pex 正在传递一个包含空字符的字符串。这是 不是 空引用。

其他提示

它是一个包含字符“\0”的字符串。C# 并没有以任何特别的方式对待它 - 它只是 unicode 字符 U+0000。如果你写:

int firstCodePoint = text[0];

然后你会发现 firstCodePoint 是 0。

它是一个带有空字符的字符串。较旧的字符串库(如 C 或较旧的 C++ 库中使用的字符串库)使用“\0”字符来指示字符串的结尾。

.Net 等较新的环境使用不同的系统,但有很多关于以 '\0' 结尾字符串的历史,因此它是一个常见的错误点。像 Pex 这样的测试库将使用它来确保您的程序正确处理它。

长度为 1 的字符串,包含字符 \u0000(又名 NUL)。这个角色没有受到特殊对待。

在 C 中,使用 \0 来终止字符串,您还可以分配一个长度为 1 的字符串。在这种情况下,标准字符串函数将报告长度为 0,因为字符串包含 \0 并以其结尾。您可以安全地修改 str[0],或 strncat 将单个字符放入其中。

Escape Sequence  
\0    
Character Name 
Null    
Unicode Encoding     
0x0000

请参阅此链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top