C# 10 : const string 문자열 내삽
C# 10 이전에서는 상수 문자열(const string)에서 문자열 내삽(string interpolation)을 사용할 수 없었다. C# 10에서는 이제 const string을 정의할 때, 문자열 내삽 기능을 사용할 수 있게 되었다.
예제
const string BASEDIR = "C:\\Temp";
// C# 10: 상수에서 string interpolation 사용 가능
const string LOGDIR = $"{BASEDIR}\\logs";
// C# 10: 상수에서 string interpolation 사용 가능
const string LOGDIR = $"{BASEDIR}\\logs";
C# 10 : 향상된 string interpolation 핸들러
컴파일러는 내삽(string interpolation) 문자열을 만나면, 이를 string.Format으로 변환하여 처리하는데, 이 부분에서 많은 메모리 할당이 일어날 수 있다. C# 10/.NET 6에서는 이러한 부분을 향상시키기 위해, 여러 API 내에서 InterpolatedStringHandler 기능을 넣었는데, 예를 들어, StringBuilder.Append() 메서드에서 기존의 Append(string? value) 위에 Append(ref StringBuilder.AppendInterpolatedStringHandler handler)를 넣어 AppendInterpolatedStringHandler가 string interpolation을 보다 효율적으로 처리하게 하였다. 아래 예제의 StringBuilder.Append() 메서드는 AppendInterpolatedStringHandler를 사용하게 되는데, 이 경우 StringBuilder는 string.Format을 사용하는 대신 'LOG: ', 'errorCode값', 'errorMsg값' 을 차례로 Append하는 방식으로 메모리할당을 줄이는 방식으로 Append를 수행한다.
예제
// AppendInterpolatedStringHandler를 사용
var sb = new StringBuilder();
sb.Append($"LOG: {errorCode}: {errorMsg}");
var sb = new StringBuilder();
sb.Append($"LOG: {errorCode}: {errorMsg}");