2011-03-03 4 views

답변

86

파일 경로와 아무 관련이 없습니다. 문자열의 이스케이프 동작을 변경합니다.

접두사가 @ 인 문자열 리터럴에서 \으로 시작하는 이스케이프 시퀀스가 ​​비활성화됩니다. \은 경로 구분 기호이므로 이스케이프 시퀀스를 시작하지 않으려면 파일 경로에 편리합니다.

정상적인 문자열에서 \\\으로 이스케이프 처리해야하므로 예제가 "pdf \\"와 비슷할 것입니다. 그러나 접두어가 @이므로 접두어로 사용되는 문자는 " (""으로 이스케이프 됨)이며 \이 표시 될 수 있습니다.

이 기능은 파일 경로 또는 정규식과 같이 \을 포함하는 문자열 리터럴에 편리합니다.

간단한 예로 이득은 그다지 크지 않지만 전체 경로가 "C:\\ABC\\CDE\\DEF" 인 이미지는 @"C:\ABC\CDE\DEF"이 훨씬 더 멋지게 보입니다.

정규식의 경우 거의 필수 항목입니다. 정규식에는 일반적으로 다른 문자를 이스케이프 처리하는 여러 개의 \이 포함되어 있으며 이스케이프 처리해야 할 경우 거의 읽을 수 없게됩니다.

+0

그래서 어떻게 바뀌나요? – Sally

+1

@Sally'@'를 제거한 후 코드를 실행하고 차이점을 확인하십시오! – Mayank

+3

또는 Path 클래스는 파일 시스템 경로에도 편리합니다. –

6

그것은 당신이 그것을 탈출하지 않고 백 슬래시 (\)를 입력 할 수 있습니다 :

var s1 = "C:\\Temp\\MyFileName"; 
var s2 = @"C:\Temp\MyFileName"; 

두 결과를 같은 내용 문자열 (문자열이 컴파일시에 interned을하기 때문에, 아마 같은 문자열 참조).

26

그것은 verbatim string literal입니다. 이 그들없이 백 슬래시, 심지어 바꿈을 포함하는 문자열을 허용

는 다르게 처리되는 :

백 슬래시는 문자열에 큰 따옴표를 삽입, 탈출을 위해 사용되지 않는 것처럼
string multiLineString = @"First line 
second line 
third line"; 

이 두 배로 할 필요합니다

string withQuote = @"before""after"; 

축약 형 문자열 리터럴은 일반적으로 백 슬래시를 자주 사용하는 파일 경로 (표시된 것처럼)와 정규식에 사용됩니다.

자세한 내용은 내 article on strings을 참조하십시오.