c# - $ - 字符串插值实时编译 - 从文件

标签 c#

我有一个文件(或者可以是数据库列中的 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/

相关文章:

c# - 使用自定义 IEqualityComparer 对字典进行 XML 序列化

c# - 如何在运行时添加 log4net appender?

c# - 如何在 C# 中枚举枚举?

c# - .NET 4.5 Framework 上不存在 ConfigurationManager 类

c# - Lucene.net 和部分 "starts with"词组搜索

c# - C# 向字典中添加数据

c# - 在 C#.NET 中实现不固定多维数组的最佳方法是什么?

c# - 隐式传递参数给基本构造函数

c# - 程序集绑定(bind)和重定向

c# - 当我收到委托(delegate)时,StackExchange.Redis 没有检索到匹配的模式