C# 11 UTF-8 문자열 리터럴 소개 | Kathleen Dollard

UTF-8 문자열 리터럴

제가 준비한 내용은 닷넷 블로그에 올라온 캐서린 돌라드님의 본문 중 해당 부분만 가져와 소개하는 글입니다.


C# 10.0 에서는 문자열을 입력하면 안됐었죠…

image

그래서 이렇게 직접 문자열을 16진수로 변환해야 했습니다.

byte[] array = Encoding.UTF8.GetBytes("James");


그리고, C# 11.0 부터는 문자열을 직접 사용할 수 있게 되었습니다. :smile:

byte[] array = "James";

그럼 자세한 내용을 한번 살펴 볼까요?

본문 내용 중…
닷넷 블로그 캐서린 돌라드님의 글에서 가져온 내용입니다.


UTF-8은 많은 시나리오, 특히 웹 시나리오에서 사용됩니다. C# 11 이전에는 프로그래머가 UTF-8을 16진수로 변환해야 했습니다. 이로 인해 장황하고 읽을 수 없으며 오류가 발생하기 쉬운 코드가 생성되거나 런타임에 문자열 리터럴을 인코딩해야 했습니다.

C# 11에서는 UTF-8 문자만 포함하는 문자열 리터럴을 해당 바이트 표현으로 변환할 수 있습니다. 이것은 컴파일 타임에 수행되므로 추가 런타임 비용 없이 바이트를 사용할 준비가 됩니다. 따라서 다음과 같은 코드를 작성할 수 있습니다.

byte[] array = "hello";             // new byte[] { 0x68, 0x65, 0x6c, 0x6c, 0x6f }
Span<byte> span = "dog";            // new byte[] { 0x64, 0x6f, 0x67 }
ReadOnlySpan<byte> span = "cat";    // new byte[] { 0x63, 0x61, 0x74 }

유형 접미사가 필요한지 여부와 그것이 의미하는 자연 유형과 같은 세부 사항에 대한 논의가 진행 중입니다. UTF-8 문자열 리터럴을 사용하려는 경우 피드백이 필요하며 자세한 내용은 UTF-8 문자열 리터럴 제안 및 여기에 포함된 링크를 참조하십시오.

이 기능은 현재 UTF-8을 나타내기 위해 바이트 배열을 구축하는 모든 사람에게 반가운 단순화를 제공합니다. 이 작업을 수행하는 경우 C# 11 릴리스 이후에 사용할 수 있도록 코드를 변환하고 싶을 것입니다. UTF-8 문자열 리터럴을 사용하지 않는 경우 이 기능을 무시할 수 있습니다. ASP.NET 사용자의 경우 응답이 문자열에서 자동으로 UTF-8로 인코딩되므로 이 기능을 무시해도 됩니다.


제가 준비한 내용은 여기까지 입니다.
읽어주셔서 감사합니다. :smile:

5개의 좋아요