$-실시간으로 문자열 보간 컴파일-파일에서 [중복]
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);
이는 런타임에 평가 됩니다 . 따라서 컴파일러는 실제 값에 대한 단서가 없으므로 다시 번역해야한다는 사실에 대해 알 수 없습니다 .