次のコードは、各バックスラッシュの「認識されないエスケープシーケンス」に関するコンパイラエラーを生成します。
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 foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
例のように文字列がファイルパスの場合、Unixスタイルのファイルパスも使用できます。
string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
しかし、他の答えには、C#での文字列エスケープのより一般的な解決策があります。
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
これは機能するか、前の例も機能します。 @ "..."は、引用符の間のすべてを文字通り処理することを意味します。
@"Hello
world"
リテラル改行を含めるため。私はもっと古い学校で、「\\」で「\」をエスケープしたい