Urutan pelolosan tak dikenal untuk string jalur yang mengandung garis miring terbalik

90

Kode berikut menghasilkan kesalahan kompilator tentang "urutan pelolosan yang tidak dikenal" untuk setiap garis miring terbalik:

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

Saya kira saya harus melarikan diri dari garis miring terbalik? Bagaimana aku melakukan itu?

Kjensen
sumber

Jawaban:

224

Anda dapat menggunakan garis miring terbalik ganda setiap kali

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

atau gunakan simbol @

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Brandon
sumber
Ini juga membantu menyelesaikan masalah Html.TextBoxFor yang saya alami. Menggunakan @ sebelum ekspresi reguler menyelesaikan urutan escape yang tidak dikenali, di mana garis miring terbalik ganda gagal.
Joshua
27

Coba ini:

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

Masalahnya adalah bahwa dalam string, a \adalah karakter pelarian. Dengan menggunakan @tanda Anda memberi tahu kompiler untuk mengabaikan karakter escape.

Anda juga bisa bertahan dengan keluar dari \:

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Josh
sumber
4
FWIW dan untuk membantu Googlebot, istilah untuk @ "" adalah "literal string verbatim". Meskipun saya juga pernah mendengarnya disebut sebagai "string literal", yang secara teknis menyertakan "literal string biasa" dari hanya "". msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
Mark Brackett
13
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Piotr Czapla
sumber
Pada catatan kecil, "kemudian lolos seperti" "
flq
9

Jika string Anda adalah jalur file, seperti dalam contoh Anda, Anda juga dapat menggunakan jalur file gaya Unix:

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

Tetapi jawaban lain memiliki solusi yang lebih umum untuk string escaping di C #.

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

Ini akan berhasil, atau contoh sebelumnya juga akan berhasil. @ "..." berarti perlakukan semua yang ada di antara tanda kutip secara harfiah, sehingga Anda bisa melakukannya

@"Hello
world"

Untuk memasukkan baris baru literal. Saya lebih tua dan lebih memilih untuk melarikan diri "\" dengan "\\"

Bob Kaufman
sumber
Tapi ganda "tidak diperlakukan secara harfiah.
Pemain sayap Sendon