Le code suivant génère une erreur de compilation concernant une "séquence d'échappement non reconnue" pour chaque barre oblique inverse:
string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Je suppose que j'ai besoin d'échapper à la barre oblique inverse? Comment je fais ça?
Vous pouvez soit utiliser une double barre oblique inverse à chaque fois
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
ou utilisez le symbole @
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Essaye ça:
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Le problème est que dans une chaîne, un \
est un personnage d'échappement. En utilisant le @
signez que vous dites au compilateur d'ignorer les caractères d'échappement.
Vous pouvez également vous en sortir en évitant le \
:
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Si votre chaîne est un chemin de fichier, comme dans votre exemple, vous pouvez également utiliser des chemins de fichiers de style Unix:
string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
Mais les autres réponses ont les solutions plus générales pour échapper une chaîne en C #.
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Cela fonctionnera, ou les exemples précédents, aussi. @ "..." signifie traiter tout ce qui est entre les guillemets littéralement pour pouvoir le faire
@"Hello
world"
Pour inclure un retour à la ligne littéral. Je suis plus old school et préfère échapper à "\" avec "\\"