$-실시간으로 문자열 보간 컴파일-파일에서 [중복]

Nov 03 2020

파일이 있습니다 (또는 DB의 열에 NVARCHAR 일 수 있음) 문자열은

   $"My name is {Name}"

그래서 내 코드에서

   var Name = "Donald";
   var line = //Get line from file or DB
   var output = $"{line}"; //<-??????

줄은 실제로 = "$"내 이름은 {Name} ""입니다. 디버그 모드에서 볼 때

string.Format (예 : "My Name is (0)")을 사용하지 않으려 는 게시물을 봤을 때 큰 아니오처럼 보입니다 .

답변

2 HimBromBeere Nov 03 2020 at 14:37

SLag가 그의 답변 에서 언급했듯이 문자열 보간은 컴파일 타임 기능입니다. 일반적으로 컴파일러는 문자열을 일부 String.Format. 그래서 $"MyString { line } 에서 발생합니다 String.Format("MyString {0}", line).

그러나 귀하의 경우 line자체는 보간 된 문자열 자체입니다. 따라서 컴파일러는이를 다음과 같이 변환합니다.

var output = string.Format("{0}", line);

이는 런타임에 평가 됩니다 . 따라서 컴파일러는 실제 값에 대한 단서가 없으므로 다시 번역해야한다는 사실에 대해 알 수 없습니다 .