C# 11 - 원시 문자열 리터럴(raw string literals)
드디어 C#에서도 소스 코드에 개발자가 원하는 문자열 그대로의 모습으로 입력하는 것이 가능해졌습니다. 이를 위한 문법은, 단지 인용부호(") 3개 이상을 연속으로 쓰는 것입니다.
string text = """
이 안에 어떤 내용의 텍스트라도 기입하는 것이 가능합니다.
""";
text = """한 줄의 문자열이라면 반드시 열고 닫는 큰따옴표 기호도 같은 줄에 표기합니다.""";
만약 문자열 안에 3개의 큰따옴표를 포함한다면 4개 이상의 큰따옴표를 사용해 문자열을 열고 닫으면 됩니다.
text = """"3개의 """ 큰따옴표를 포함한 문자열""""; // 4개 사용
text = """""3개의 """ 큰따옴표를 포함한 문자열"""""; // 5개 사용
즉, 내부에 사용한 큰따옴표의 반복보다 한 개 이상 더 많은 기호를 쓰면 되는 것입니다. 이와 함께 들여 쓰기에 대해서도 보완이 되었습니다. 예를 들어, 기존의 경우 여러 줄의 문자열을 사용하면서 소스 코드를 보기 좋게 만들기 위해 이런 식으로 사용하면,
string text = @"test
is
good";
Console.WriteLine(text);
/* 출력 결과
test
is
good
*/
출력 시 각 문자열의 시작 부분에도 공백 문자열이 함께 나왔는데, 원시 문자열 리터럴에서는 닫는 큰따옴표의 들여 쓰기 위치를 기준으로 내부의 문자열에 대한 들여 쓰기 공백도 맞추는 식으로 해결했습니다.
string text = """
test
is
good
"""; // 닫는 큰따옴표의 들여 쓰기 칼럼 위치를 기준으로, 문자열의 공백을 무시
Console.WriteLine(text);
/* 출력 결과
test
is
good
*/
물론, 저 상황에서 이전의 경우처럼 공백문자를 표현하고 싶다면 닫는 큰따옴표의 위치를 조정하면 됩니다.
string text = """
test
is
good
""";
Console.WriteLine(text);
/* 출력 결과
test
is
good
*/
마지막으로 유의할 점은, 닫는 큰따옴표의 칼럼 위치가 들여 쓰기의 기준이 되므로 그보다 앞선 문자 문자열을 사용하면 컴파일 오류가 발생합니다.
// 컴파일 오류: CS8999 Line does not start with the same whitespace as the closing line of the raw string literal.
string text = """
test
is
good
"""; // 닫는 큰따옴표의 위치보다 "is" 문자열이 앞서므로.
C# 11 - 원시 문자열 리터럴(공식 문서, raw string literals)
; https://www.sysnet.pe.kr/2/0/13085
C# 11 - ref 필드(공식 문서, ref fields)
; https://www.sysnet.pe.kr/2/0/13015
Language Feature Status
; https://github.com/dotnet/roslyn/blob/main/docs/Language%20Feature%20Status.md
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]