O código a seguir gera um erro do compilador sobre uma "sequência de escape não reconhecida" para cada barra invertida:
string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Eu acho que preciso escapar da barra invertida? Como faço isso?
Respostas:
Você pode usar uma barra invertida dupla a cada vez
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
ou use o símbolo @
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Experimente isto:
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
O problema é que em uma string, um \ é um caractere de escape. Ao usar o @sinal, você diz ao compilador para ignorar os caracteres de escape.
Você também pode escapar de \:
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Se sua string for um caminho de arquivo, como em seu exemplo, você também pode usar caminhos de arquivo no estilo Unix:
string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
Mas as outras respostas têm as soluções mais gerais para o escape de string em C #.
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Isso funcionará, ou os exemplos anteriores também. @ "..." significa tratar tudo entre aspas literalmente, para que você possa fazer
@"Hello
world"
Para incluir uma nova linha literal. Eu sou mais da velha escola e prefiro escapar "\" com "\\"