object a = 10;
박싱이 일어나서 int 값이 힙에 할당됨,
string a = 10.ToString();
10이라는 값이 ToString을 호출하면서 스트링 문자열이 힙에 할당됨.
둘다 어차피 값이였던 데이터가 힙에할당되는건 마찬가지인데
왜 이펙티브 c#보면 문자열 보간에서 $"a is {10.ToString()}" ToString을 쓰는게 박싱을 피할수있어서 오버헤드를 피할수 있다고 설명하는거임?
어차피 있는거나 없는거나 힙에 할당되는건 마찬가지일텐데
1. heap vs string pool로 구글링 / 2. 10.ToString은 boxing/unboxing이 아니라 string pool을 사용할 뿐이니 heap, string pool로 검색해서 읽어봐라. c#에서 string은 스트링 풀에서 관리함.