Неизвестная escape-последовательность для строки пути, содержащей обратную косую черту

Следующий код генерирует ошибку компилятора об "непризнанной escape-последовательности" для каждой обратной косой черты:

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

Думаю, мне нужно избежать обратной косой черты? Как это сделать?

Ответ 1

Вы можете использовать двойную обратную косую черту каждый раз

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

или используйте символ @

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

Ответ 2

Попробуйте следующее:

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

Проблема в том, что в строке a \ является символом escape. Используя знак @, вы сообщаете компилятору игнорировать escape-символы.

Вы также можете пройти с помощью \:

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

Ответ 3

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

Ответ 4

Если ваша строка является файловым путем, как в вашем примере, вы также можете использовать пути файлов стиля Unix:

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

Но другие ответы имеют более общие решения по экранированию строк в С#.

Ответ 5

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

Это будет работать, или предыдущие примеры тоже. @ "..." означает лечить все между кавычками буквально, так что вы можете сделать

@"Hello
world"

Чтобы включить литеральную новую строку. Я более старая школа и предпочитаю бежать "\" с "\\"