보간된 문자열(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 |