[c#] 백 슬래시가 포함 된 경로 문자열에 대해 인식 할 수없는 이스케이프 시퀀스

다음 코드는 각 백 슬래시의 “인식 할 수없는 이스케이프 시퀀스”에 대한 컴파일러 오류를 생성합니다.

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";


답변

예에서와 같이 문자열이 파일 경로 인 경우 Unix 스타일 파일 경로를 사용할 수도 있습니다.

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

그러나 다른 답변에는 C #에서 문자열 이스케이프에 대한 더 일반적인 솔루션이 있습니다.


답변

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

이것은 작동하거나 이전 예제도 작동합니다. @ “…”는 따옴표 사이의 모든 것을 문자 그대로 취급하는 것을 의미합니다.

@"Hello
world"

리터럴 개행을 포함합니다. 나는 더 오래된 학교이고 “\”를 “\\”로 탈출하는 것을 선호합니다.


답변