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

2024. 7. 30. 09:00·독서/Effective C#


01. String.Format() ?

C#을 사용하는 개발자들 중에서 String.Format()을 사용해서 문자열을 표현하는 사람들을 본 적이 없는 것 같다. 내가 C#에 대해서 처음 입문 했을 때가 2018년이었는데 그때도 본 적은 없는 것 같다. 

 

String.Format().. 그러니까 포맷 문자열에 대한 예시는 다음과 같다. C언어에서 출력하는 것과 비슷하다.

int age = 21;
string name = "김민수";

// 1번
Console.WriteLine("이름: {0}, 나이: {1}", name, age);

// 2번
string result = string.Format("이름: {0}, 나이: {1}", name, age);
Console.WriteLine(result);

 


02. 문자열 보간(String Interpolation)

확실히 자세한 문자열 보간 : https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/tokens/interpolated

 

$ - 문자열 보간 - 형식 문자열 출력 - C# reference

'$' 토큰을 사용하는 문자열 보간은 기존 문자열 복합 서식 지정보다 문자열 출력의 서식을 지정하는 보다 읽기 쉽고 편리한 구문을 제공합니다.

learn.microsoft.com

 

문자열 보간은 C# 6.0 버전에 추가되었다. C# 6.0이 2015년에 출시되었다고 했으니까.. 사실 지금은 문자열 보간을 사용해서 표현하는게 더 익숙한 사람들이 많을거다. 문자열 보간은 다음과 같은 생김새를 가진다.

int age = 21
string name = "김민수"

Console.WriteLine($"이름: {name}, 나이: {age}");

 

 

문자열 앞에 '$' 기호를 붙이고 문자열로 변경하고 싶은 표현식은 '{ }'를 통해서 감싸주면 된다.

 


03. 문자열 보간을 사용하는 이유?

문자열 보간은 컴파일러가 내부적으로 String.Format 형식으로 변경한다. 그럼에도 불구하고 문자열 보간을 사용하는 이유는 가독성 향상에 큰 이점이 있으면서 삼항 연산자, 혹은 사칙연산과 같은 간단한 표현식을 쉽게 사용 할 수 있기 때문이다.

 


04. 문자열 보간에서 주의해야 하는 점

// Boxing 발생!
Console.WriteLine($"The value of pi is {Math.PI}");

// 방지!
Console.WriteLine($"The value of pi is {Math.PI.ToString()}");

 

위 코드와 같이 문자열 보간에서 Math.PI를 인자로 추가한다면 Math.PI는 double 타입으로 반환 후, object 타입으로 박싱을 수행하게 된다. 그래서 이런 경우에는 ToString 메서드를 통해서 String 타입을 인자로 전달한다면 박싱을 방지할 수 있다.

'독서 > Effective C#' 카테고리의 다른 글

[Effective C#] nameof() 연산자를 적극 활용하라  (0) 2024.08.01
[Effective C#] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라  (0) 2024.07.31
[Effective C#] 캐스트보다는 is, as가 좋다  (0) 2024.07.29
[Effective C#] const보다는 readonly가 좋다.  (1) 2024.07.24
[Effective C#] 지역변수를 선언할 때는 var를 사용하는 것이 낫다  (1) 2024.07.23
'독서/Effective C#' 카테고리의 다른 글
  • [Effective C#] nameof() 연산자를 적극 활용하라
  • [Effective C#] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라
  • [Effective C#] 캐스트보다는 is, as가 좋다
  • [Effective C#] const보다는 readonly가 좋다.
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부
        • 디자인 패턴
        • 수학
        • CS
        • Git
        • 알고리즘
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
        • 이득우의 게임 수학
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
      오블완
      티스토리챌린지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    [Effective C#] string.Format()을 보간 문자열로 대체하라
    상단으로

    티스토리툴바