我有一个配置文件myapp.exe.config。 在文件中,我有一个带有完整路径文件名的属性作为值。
<add key="InfoFile" value="c:\temp\info.txt" />
如果我使用单反斜杠或双反斜杠似乎有效。也就是说,
<add key="InfoFile" value="c:\\temp\\info.txt" />
也有效。这样做的正确方法是什么?
答案 0 :(得分:25)
你不需要那个。属性值中的任何内容都是字符数据。
由于您使用C#读取这些值,因此它们将被转义,就好像它们是代码中的文字路径字符串一样。
无论如何,您可能想知道C#有@
运算符来声明逐字字符串,这意味着在代码中使用文字路径时不需要转义反斜杠:
string somePath = @"C:\blah\blih\bluh.txt";
答案 1 :(得分:17)
反斜杠在XML中没有特殊含义,因此不应对它们进行转义。
此外,如果您要以XML格式转义反斜杠,则不会使用\\
,而是使用\
。
它与双反斜杠一起使用的原因还在于文件系统是宽容的。您可以使用路径c:\\temp\\info.txt
来访问文件c:\temp\info.txt
。
答案 2 :(得分:2)
基本上,URL或URI包含单斜杠\
,因此最好使用单斜杠。编写代码时出现问题,但在XML中使用单斜杠没有问题。
答案 3 :(得分:0)
我认为最好的方法是防止双反斜杠以防万一,但如果它有效,为什么要改变呢。当您将配置值读入应用程序时,可能将“\\”替换为“\”。