Đoạn mã sau tạo ra lỗi trình biên dịch về "chuỗi thoát không được công nhận" cho mỗi dấu gạch chéo ngược:
string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Tôi đoán tôi cần thoát khỏi gạch chéo ngược? Làm thế nào để làm điều đó?
Câu trả lời:
Bạn có thể sử dụng dấu gạch chéo ngược kép mỗi lần
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
hoặc sử dụng ký hiệu @
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Thử đi:
string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Vấn đề là trong một chuỗi, a \
là một ký tự thoát. Bằng cách sử dụng @
dấu hiệu, bạn yêu cầu trình biên dịch bỏ qua các ký tự thoát.
Bạn cũng có thể thoát khỏi \
:
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Nếu chuỗi của bạn là đường dẫn tệp, như trong ví dụ của bạn, bạn cũng có thể sử dụng đường dẫn tệp kiểu Unix:
string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
Nhưng các câu trả lời khác có các giải pháp chung hơn để thoát chuỗi trong C #.
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Điều này sẽ hoạt động, hoặc các ví dụ trước cũng vậy. @ "..." có nghĩa là xử lý mọi thứ giữa các dấu ngoặc kép theo nghĩa đen, vì vậy bạn có thể làm
@"Hello
world"
Để bao gồm một dòng mới theo nghĩa đen. Tôi học cũ hơn và muốn thoát khỏi "\" bằng "\\"