为什么用'\ 0'替换文件名中的无效字符?

gar*_*arg 1 .net c#

我在同事的一个项目中偶然发现了这一点:

foreach (var invalidChar in Path.GetInvalidFileNameChars())
    fileName = fileName.Replace(invalidChar, '\0');
Run Code Online (Sandbox Code Playgroud)

gerenal的想法是显而易见的,但我想知道为什么他选择用null字符替换无效字符而不是'常规'字符或只是空字符串.

我猜这个选择有很好的理由(写这篇文章的人是我们团队的老人),我只想知道这个原因是什么.

Tho*_*mar 5

在评论问题之后,我正在寻找证明文件名实际上不允许\ 0的证明.我找到了:

使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,但以下情况除外:
*以下保留字符:<(小于),>(大于) ,:(冒号),"(双引号),/(正斜杠),\(反斜杠),|(垂直条或管道),?(问号),*(星号)
*整数值零,有时也称为ASCII NUL字符.
*整数表示形式在1到31范围内的字符,但允许使用这些字符的备用数据流除外.