包含反斜杠的pathstring无法识别的转义序列

以下代码为每个反斜杠生成一个有关“无法识别的转义序列”的编译器错误:

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml"; 

我想我需要逃避反斜杠? 我怎么做?

您可以每次使用双反斜杠

 string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml"; 

或使用@符号

 string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml"; 

尝试这个:

 string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml"; 

问题是在string中, \是一个转义字符。 通过使用@符号,您可以告诉编译器忽略转义字符。

你也可以逃脱\

 string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml"; 
 var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml"; 

如果你的string是一个文件path,如你的例子,你也可以使用Unix风格的文件path:

 string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml"; 

但是其他答案有更通用的C#中string转义的解决scheme。

 string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml"; 

这将起作用,或者前面的例子也会起作用。 @“…”意思是字面上对待引号之间的所有内容,所以你可以这样做

 @"Hello world" 

包含一个文字换行符。 我更老,更喜欢用“\\”来逃避“\”