โค้ดต่อไปนี้สร้างข้อผิดพลาดของคอมไพเลอร์เกี่ยวกับ "ลำดับการหลีกเลี่ยงที่ไม่รู้จัก" สำหรับแบ็กสแลชแต่ละตัว:
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";
ปัญหาคือในสตริง a \
เป็นอักขระหลีก การใช้@
เครื่องหมายแสดงว่าคุณบอกให้คอมไพเลอร์ละเว้นอักขระหลีก
คุณสามารถทำได้โดยการหลีกเลี่ยง\
:
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
หากสตริงของคุณเป็นพา ธ ไฟล์ดังในตัวอย่างคุณยังสามารถใช้พา ธ ไฟล์สไตล์ยูนิกซ์ได้:
string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
แต่คำตอบอื่น ๆ มีวิธีแก้ปัญหาทั่วไปมากกว่าในการหนีสตริงใน C #
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
สิ่งนี้จะได้ผลหรือตัวอย่างก่อนหน้านี้ก็เช่นกัน @ "... " หมายถึงรักษาทุกสิ่งระหว่างเครื่องหมายคำพูดตามตัวอักษรดังนั้นคุณสามารถทำได้
@"Hello
world"
เพื่อรวมบรรทัดใหม่ตามตัวอักษร ฉันอายุมากขึ้นและชอบหนี "\" ด้วย "\\"