달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2016. 6. 14. 06:12

보간된 문자열(Interpolated strings) 프로그래밍/C#2016. 6. 14. 06:12

보간된 문자열(Interpolated Strings)

https://msdn.microsoft.com/ko-kr/library/dn961160.aspx



1. 문자열을 생성하는데 사용됩니다.

2. 보간된 문자열 식은 식이 포함된 템플릿 문자열과 유사합니다.

3. 보간된 문자열 식은 포함된 식을 식 결과의 ToString 표현(represenations)으로 대체하여 문자열을 만듭니다.

4. 보간된 문자열은 인수 측면에서(with respect to) 복합 형식 지정(Composite Formatting)보다 이해하기 쉽습니다.

5. 다음은 보간된 문자열의 예입니다.


Console.WriteLine($"Name = {name}, hours = {hours:hh}")


6. 보간된 문자열의 구조(structure)는 다음과 같습니다.


$ " <text> { <interpolation-expression> <optional-comma-field-width> <optional-colon-format> } <text> ... } "


7. 문자열 리터럴을 사용할 수 있는 곳이면 어디든지 보간된 문자열을 사용할 수 있습니다.

8. 프로그램 실행 시 보간된 문자열 리터럴을 사용하여 코드가 실행되는 경우 코드에서 보간 식을 평가하여 새 문자열 리터럴을 계산합니다.

9. 이 계산(computation)은 보간된 문자열을 포함하는 코드가 실행될 때마다 발생합니다.

10. 보간된 문자열에 중괄호(a curly brace)("{" or "}")를 포함하려면 두 개의 중괄호 "{{" 또는 "}}"를 사용합니다.

11. 자세한 내용은 암시적 변환 섹션을 참조하세요.

<암시적 변환>

12. 보간된 문자열에서 다음과 같은 암시적 형식 변환을 수행할 수 있습니다.


var s = $"hello, {name}" System.IFormattable s = $"Hello, {name}" System.FormattableString s = $"Hello, {name}"


13. 첫번째 예제에서는 모든 문자열 보간 값이 계산된 string 값을 생성합니다.

14. 최종 결과이며 문자열 형식입니다.

15. 나타나는 모든 이중 중괄호("{{" 및 "}}")가 단일 중괄호로 변환됩니다.

16. 두 번째 예제에서는 고정 컨텍스트(invariant context)를 포함하는 문자열을 변환할 수 있는 IFormattable 변수를 생성합니다.

17. 이 기능은 숫자 및 데이터 형식을 다양한 언어에서 올바르게 표시하는 데 유용합니다.

18. 나타나는 모든 이중 중괄호("{{" 및 "}}")는 ToString을 사용하여 문자열의 형식을 지정할 때까지 이중 중괄호로 유지됩니다.

19. 포함된 보간 식은 모두{0}, {1} 등으로 변환됩니다.


s.ToString(null, System.Globalization.CultureInfo.InvariantCulture);


20. 세 번째 예제에서는 보간 계산 결과로 얻은 개체를 검사할 수 있는 FormattableString을 생성합니다.

21. 예를 들어 개체와 개체가 문자열로 렌더링되는 방식을 검사(inspect)하면 쿼리를 빌드하는 경우 삽입 공격(injection attack)으로부터 보호하는 데 도움이 됩니다.

22. FormattableString을 사용하면 InvariantCulture 및 CurrentCulture 문자열결과를 편리하게 생성할 수 있습니다.

23. 나타나는 모든 이중 중괄호 ("{{" 및 "}}")는 형식을 지정할 때까지 이중 중괄호로 유지됩니다.


$"Name = {name}, hours = {hours:hh}" var s = $"hello, {name}" System.IFormattable s = $"Hello, {name}" System.FormattableString s = $"Hello, {name}" $"{person.Name, 20} is {person.Age:D3} year {(p.Age == 1 ? "" : "s")} old."


24. 보간된 문자열 식은 $로 시작하고 컴파일러가 쉼표, 콜론, 닫는 중괄호를 발견할 때까지 포함된 보간 식을 균형 있는 텍스트(balanced text)로 검색(scan)하기 때문에 포함된 보간 식 내에서 인용 문자(quotation characters)를 따옴표로 묶을(quote) 필요가 없습니다.

25. 동일한 이유로, 마지막 예제에서는 괄호를 사용하여 형식 사양을 시작하는 콜론 없이 보간 식 내에 조건식(p.Age == 1 ? "" : "s")을 포함할 수 있게 합니다.

26. 포함된 보간 식 외부(하지만 보간된 문자열 식 내부)에서는 평소대로 인용 문자를 이스케이프합니다.


expression: interpolated-string-expression interpolated-string-expression: interpolated-string-start interpolations interpolated-string-end interpolations: single-interpolation single-interpolation interpolated-string-mid interpolations single-interpolation: interpolation-start interpolation-start : regular-string-literal interpolation-start: expression expression , expression


예제 사이트

http://www.dotnetperls.com/string-interpolation


1. 문자열 : $"Hello {변수}"

2. 배열 : $"Hello {변수[0]}"

3. 계산 식 : $"Hello {1+2}"

4. 메서드 호출 : $"Hello {함수()}

376.5875 ms,    String interpolation
293.1515 ms,    Concat (+)
369.2315 ms,    String Format


'프로그래밍 > C#' 카테고리의 다른 글

Windows Forms 컨트롤의 다중 스레딩  (0) 2016.06.21
스레드  (0) 2016.06.14
제네릭  (0) 2016.06.11
C# 기타  (0) 2016.06.10
C# 컨텍스트 키워드  (0) 2016.06.06
:
Posted by 지훈2