Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# $-字符串插值实时编译-从文件_C# - Fatal编程技术网

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

C# $-字符串插值实时编译-从文件,c#,C#,我有一个文件(或者可以是DB列中的NVARCHAR) 字符串是 $"My name is {Name}" 所以在我的代码中应该是 var Name = "Donald"; var line = //Get line from file or DB var output = $"{line}"; //<-?????? var Name=“Donald”; var line=//从文件或数据库获取行 变量输

我有一个文件(或者可以是DB列中的NVARCHAR) 字符串是

   $"My name is {Name}"
所以在我的代码中应该是

   var Name = "Donald";
   var line = //Get line from file or DB
   var output = $"{line}"; //<-??????
var Name=“Donald”;
var line=//从文件或数据库获取行
变量输出=$“{line}”// 如中所述,字符串插值是编译时的一项功能。通常,编译器会将您的字符串转换为一些
string.Format
。因此,
$“MyString{line}
将产生
String.Format(“MyString{0}”,line)

但是,在您的示例中,
本身是一个插值字符串。因此编译器将其转换为:

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

这是在运行时计算的。因此编译器对实际值以及必须再次翻译的事实没有任何线索。

您可能会用
行接近。替换($“{{{nameof(Name)}}}”,Name)
并删除开始的
$”
和结束的
您必须坚持使用String.Format或手动将标记替换为值(或者可能有一个库以合理的方式执行此操作)。您可能不想使用替换函数?您希望被替换的变量由文件内容处理,而不在代码中处理它?对吗?