C# 6.0에는 보간문자열(Interpolated string)이라는 새로운 기능이 도입되었다.
보간문자열이 뭘까? 예시로 살펴보자
int a = 5;
int b = 13;
string str1, str2;
// 이랬던 것을
str1 = string.Format("{0} + {1} = {2}", a, b, a + b);
Console.WriteLine(str1);
// 이렇게 바꾼다
str2 = $"{a} + {b} = {a + b}";
Console.WriteLine(str2);
string.Format() 은 직접 출력해보고 눈으로 확인하기 전까지는 코드를 제대로 작성했는지 쉽게 짐작하기 어려운 반면, 보간 문자열은 포맷 안에 실제 인자가 들어가기 때문에 직관적으로 이해할 수 있다.
보간 문자열을 사용하려면 문자열 앞에 '$'을 붙이면 된다.
Alignment와 FormatString
string.Format("{0:N1}", a)
처럼 보간 문자열도 FormatString을 지원한다.더불어 alignment도 같이 살펴보자.
{<interpolatedExpression>,<alignment>:<formatString>}
//Alignment; 값이 양수이면 우측정렬, 음수이면 좌측 정렬이다.
int a = 5, b = 13;
Console.WriteLine($"{a, -5}|{b, 5}");
/* Result
5 | 13
*/
//FormatString
Console.WriteLine($"{Math.PI:F2}");
/* Result
3.14
*/
삼항연산자를 사용할 때
다음과 같이 괄호를 한 번더 씌워야한다.
var rand = new Random();
for(int i = 0; i < 5; i++)
{
Console.WriteLine($"{(rand.NextDouble() < 0.5 ? "heads" : "tail")}");
}
Miscellaneous
유니티에서는 보간문자열을 쓸 수 있을까?
유니티 2017버전은 기본적으로 .NET 3.5 버전, C# 4.0을 사용하고 있기 때문에 사용할 수 없다.
빌드 세팅에서 스크립팅 런타임 업그레이드 설정을 하면 .NET 4.6 버전을 Experimental 옵션으로 사용할 수 있다. Unstable 하지만 C# 6.0의 문법을 실험해볼 수 있다.
https://docs.unity3d.com/kr/2018.1/Manual/ScriptingRuntimeUpgrade.html
유니티 2018.1 베타버전에서 부터 .NET 4.6이 no longer experimental이라는 소식이 있으니 기대된다.
https://docs.microsoft.com/ko-kr/dotnet/csharp/tutorials/string-interpolation
빌 와그너 (2017), Effective C# (3rd Edition), 한빛미디어
'아카이빙 > C#' 카테고리의 다른 글
[Effective C#] 불필요한 객체를 만들지 말라 (0) | 2018.08.11 |
---|---|
[Effective C#] 박싱과 언박싱을 최소화하라 (0) | 2018.06.30 |
[C#] LINQ (0) | 2018.06.26 |
[C#] 람다식 (Lambda Expression) (0) | 2018.06.26 |
[C#] 이벤트와 델리게이트 (0) | 2018.06.25 |