티스토리 뷰
[Effective C# Item 5] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라
weekyear 2020. 10. 18. 14:065) 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라
앞선 보간 문자열을 다루는 글에서 문자열 보간 기능을 이용해서 가독성 좋은 string 생성 방법을 배웠다. 하지만 여러 문화권과 다양한 언어를 다뤄야 하는 경우에는 좀더 세부적인 제어가 필요하기 때문에 문자열을 생성하는 과정을 조금 더 자세히 알아둬야 한다.
앞의 글에서 다뤘듯이, 문자열 보간 기능을 이용해서 string을 생성할 경우 아래 코드와 같이 선두에 '$'를 붙이고 중괄호 { }를 사용해서 string을 생성하는 것이 전부다. 근데 특이한 것은 이 보간 기능의 결과로 생성되는 반환값의 타입이 string일 수도 있지만 FormattableString을 상속하는 타입일 수도 있다.
아래 코드는 FormattableString을 상속한 타입의 객체를 생성하는 코드다.
만약 다음 코드와 같이 third를 var로 선언하면 이 변수는 상황에 따라 string이 될 수도 있고 FormattableString을 상속한 타입의 객체가 될 수도 있다.
위 코드에서 var이 FormattableString을 상속한 객체가 된다면 현재 컴퓨터에 지정된 문화권을 고려한 string을 생성할 수 있다.
FormattableString 사용 방법
다음 코드는 FormattableString 타입의 객체를 이용하여 문화권과 언어를 지정하여 string을 생성하는 메서드다.
문자열 보간 기능은 글로벌화나 로컬화에 필요한 거의 모든 기능을 갖추고 있다. 게다가 문화권을 고려하여 문자열을 생성하는 내부적인 복잡함을 잘 감추고 있기도 하다.
문화권을 임의로 지정해야 하는 경우에는 명시적으로 FormattableString을 타입의 객체를 생성하도록 코드를 작성하고 이 객체를 통해 문자열을 얻어 오는 방법을 사용하는 것이 좋다.
아직 문화권, 언어별로 string을 다뤄본 적이 없어서 생소한 부분이 많았다.
이번 기회에 지금 만들고 있는 앱에 FormattableString을 적용시켜 보는 쪽으로 작업해야 겠다.
참거 - Effective C# <강력한 C# 코드를 구현하는 50가지 전략과 기법, 이펙티브>, 빌 와그너, 김명신, 한빛미디어
'Programming > Effective C#' 카테고리의 다른 글
[Effective C# Item 7] 델리게이트를 이용하여 콜백을 표현하라 (0) | 2020.10.18 |
---|---|
[Effective C# Item 6] nameof() 연산자를 적극 활용하라 (0) | 2020.10.18 |
[Effective C# Item 4] string.Format()을 보간 문자열로 대체하라 (0) | 2020.10.18 |
[Effective C# Item 3] 캐스트보다는 is, as가 더 좋다 (0) | 2020.10.18 |
[Effective C# Item 2] const보다는 readonly가 좋다 (0) | 2020.10.18 |