我有一个文件(或者可以是数据库列中的 NVARCHAR) 该字符串是
$"My name is {Name}"
所以在我的代码中应该是
var Name = "Donald";
var line = //Get line from file or DB
var output = $"{line}"; //<-??????
行实际上将是 = "$"我的名字是 {Name}"";在 Debug模式下查看时
当我看到这个 post 时,这看起来像是一个很大的不。 我想避免使用 string.Format (例如:“我的名字是(0)”)
最佳答案
正如 his answer 中提到的 SLAg ,字符串插值是一个编译时功能。通常编译器会将您的字符串转换为某种String.Format
。因此 $"MyString { line }
将导致 String.Format("MyString {0}", line)
。
但是在您的情况下 line
本身就是一个插值字符串本身。所以编译器会将其转换为:
var output = string.Format("{0}", line);
在运行时进行评估。因此编译器不知道实际值,因此不知道它必须再次翻译的事实。
关于c# - $ - 字符串插值实时编译 - 从文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64658334/