[04] string.Format()을 보간 문자열로 대체하라

다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.

 

 

string.Format()

 - 포맷 문자열과 인자 리스트가 분리되어 전달되기 때문에 형태를 짐작하기 어렵다.

 - 포맷 문자열의 인자의 개수와 실제 전달되는 인자의 개수를 확인하지 않기에 실수가 발생할 여지가 있다.

 

문자열 보간의 동작 방식

 - 내부적으로는 param을 이용하여 object배열을 전달하는 기존 포매팅 함수를 호출한다.

 - 때문에 박싱이 수행되기 때문에 루프 내에서 사용된다면 성능에 영향을 준다.

Console.WriteLine($"값은 : {Math.PI}"); // double -> object 로 박싱이 일어난다.

 - 아래와 같이 미리 문자열로 변환하여 박싱을 방지할 수도 있다.

Console.WriteLine($"값은 : {Math.PI.ToString()}"); // 문자열은 참조타입이라 박싱이 수행되지않는다.

 

문자열 보간 주의점

 - 포맷 문자열을 나타낼 때 ':' 을 사용하는데, 이 기호는 조건 표현식을 나타낼 때도 사용되기 때문에 컴파일 오류의 여지가 있다.

 - 조건 표현식으로 ':'을 사용할 때에는 괄호를 사용하여 감싸주면 해결된다.

 

결론

 - 대부분의 경우 문자열 보간이 좋다.

 - (개인적 결론) 인자가 많아질경우 복잡도가 증가해서 string.Format()이 더 나은 경우도 분명 존재하긴 한다.

 

 

댓글

Designed by JB FACTORY