.NET StringBuilder 和逐字字符串文字

.NET StringBuilder and verbatim string literal

在我的应用程序中有一个 class 可以与 PdfSharp 一起生成一些 PDF 报告。我将输出文件夹指定为带有 verbatim

的字符串
string file_path = @"D:\Intranet\Students\DailyMarks\";

还有一个 StringBuilder 可以根据一些 ID 和 DateTime 生成文件名:

... sb.Append(document.Type); sb.Append(document.Id); sb.Append(DateTime.Now.ToShortString());

最后我做了以下事情

file_path + sb.toString();

但是我的应用程序异常。调试会话后,我发现实际上我的 file_path

file_path = "D:\Intranet\Students\DailyMarks\...";

据我所知,这是在将原始文件与 StringBuilder 的 toString() 调用串联之后发生的。 我试图用这样的东西替换 file_path 字符串:

file_path = file_path.Replace(@"\",@"\");

但它不起作用。我哪里做错了?

完全没问题。

"D:\Intranet\Students\DailyMarks\..." == @"D:\Intranet\Students\DailyMarks\..."

在常规字符串中,您需要转义斜杠,逐字自动完成

可能是DateTime.Now.ToShortString()方法造成的,在路径中添加了禁止字符(:)。

我今天遇到的另一个类似的情况是发送日语「:」(冒号和整个内部)作为文件名的元素,它起作用了。我想知道,为什么俄语冒号会调用异常而日语不会。很有意思。