다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.
string.Format()
- 포맷 문자열과 인자 리스트가 분리되어 전달되기 때문에 형태를 짐작하기 어렵다.
- 포맷 문자열의 인자의 개수와 실제 전달되는 인자의 개수를 확인하지 않기에 실수가 발생할 여지가 있다.
문자열 보간의 동작 방식
- 내부적으로는 param을 이용하여 object배열을 전달하는 기존 포매팅 함수를 호출한다.
- 때문에 박싱이 수행되기 때문에 루프 내에서 사용된다면 성능에 영향을 준다.
Console.WriteLine($"값은 : {Math.PI}"); // double -> object 로 박싱이 일어난다.
- 아래와 같이 미리 문자열로 변환하여 박싱을 방지할 수도 있다.
Console.WriteLine($"값은 : {Math.PI.ToString()}"); // 문자열은 참조타입이라 박싱이 수행되지않는다.
문자열 보간 주의점
- 포맷 문자열을 나타낼 때 ':' 을 사용하는데, 이 기호는 조건 표현식을 나타낼 때도 사용되기 때문에 컴파일 오류의 여지가 있다.
- 조건 표현식으로 ':'을 사용할 때에는 괄호를 사용하여 감싸주면 해결된다.
결론
- 대부분의 경우 문자열 보간이 좋다.
- (개인적 결론) 인자가 많아질경우 복잡도가 증가해서 string.Format()이 더 나은 경우도 분명 존재하긴 한다.
'🌍 C# Study > 이펙티브 C#' 카테고리의 다른 글
[06] nameof() 연산자를 적극 활용하라 (0) | 2021.04.22 |
---|---|
[05] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라 (0) | 2021.04.22 |
[03] 캐스트보다는 is, as가 좋다 (0) | 2021.04.22 |
[02] const보다는 readonly가 좋다 (0) | 2021.04.22 |
[01] 지역변수를 선언할 때는 var를 사용하는 것이 낫다. (0) | 2021.04.20 |