Ters eğik çizgi içeren yol dizesi için tanınmayan kaçış dizisi


93

Aşağıdaki kod, her ters eğik çizgi için "tanınmayan bir çıkış sırası" hakkında bir derleyici hatası oluşturur:

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

Sanırım ters eğik çizgiden kaçmam gerekiyor? Bunu nasıl yaparım?

Yanıtlar:


227

Her seferinde çift ters eğik çizgi kullanabilirsiniz

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

veya @ sembolünü kullanın

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

Bu ayrıca yaşadığım bir Html.TextBoxFor sorununun çözülmesine yardımcı oldu. Normal ifadeden önce @ kullanılması, çift ters eğik çizginin başarısız olduğu Tanınmayan çıkış sırasını çözdü.
Joshua

29

Bunu dene:

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

Sorun, bir dizede a'nın \bir kaçış karakteri olmasıdır. @İşareti kullanarak, derleyiciye kaçış karakterlerini yok saymasını söylersiniz.

Ayrıca şunlardan kaçarak da geçebilirsiniz \:

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

4
FWIW ve Googlebot’a yardımcı olmak için @ "" terimi "kelimesi kelimesine dizgi" dir. Bunun sadece "dizgi değişmezi" olarak adlandırıldığını da duymuş olsam da, teknik olarak "normal dizge" "" yi içerir. msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
Mark Brackett

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

Küçük bir notta, bir "daha sonra" "gibi
kaçar

9

Dizeniz, örneğinizde olduğu gibi bir dosya yoluysa, Unix stili dosya yollarını da kullanabilirsiniz:

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

Ancak diğer yanıtların C # 'da dizeden kaçan daha genel çözümleri vardır.


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

Bu işe yarayacak veya önceki örnekler de işe yarayacak. @ "...", tırnak işaretleri arasındaki her şeyi gerçek anlamıyla ele almak anlamına gelir, böylece

@"Hello
world"

Gerçek bir satırsonu eklemek için. Ben daha eski kafalıyım ve "\" ile "\\" ile kaçmayı tercih ederim


Ama çifte "kelimenin tam anlamıyla ele
alınmaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.