后端口C#插值字符串运算符$

后端口C#插值字符串运算符$,c#,string,c#-4.0,c#-6.0,C#,String,C# 4.0,C# 6.0,我有一些代码想在旧版本的c中重用# List programId=new List(){“1”、“2”、“3”} string.Join(“,”Id.Select(x=>$”{x}')) 如何将$运算符转换为C#的旧版本?这个如何 string.Join(",", Id.Select(x => string.Format("'{0}'", x))) 转化为 string.Format("'{0}'", x) 在旧版本的C#中 事实上,字符串插值版本只是编译器的语法糖。如果对生成的程序

我有一些代码想在旧版本的c中重用#

List programId=new List(){“1”、“2”、“3”}
string.Join(“,”Id.Select(x=>$”{x}'))
如何将
$
运算符转换为C#的旧版本?

这个如何

string.Join(",", Id.Select(x => string.Format("'{0}'", x)))
转化为

string.Format("'{0}'", x)
在旧版本的C#中


事实上,字符串插值版本只是编译器的语法糖。如果对生成的程序集进行反编译,您会发现它全部解析为
string.Format
调用。

返回到旧的.NET?不需要,开箱即用。@leppie-
$
用于字符串插值对于C#6.0来说是新的。@Tim:即使您在VS2015中选择.NET 2并使用它,C#6编译器也会编译兼容的代码。@leppie-真的吗?所以这才是真正意义上的合成糖。@Tim:大多数情况下,对于较新的.NET来说,
IFormattable
可能会发挥作用(但我在实践中并没有真正看到这一点)编辑:哦,可能是我现在不记得的其他界面:我确实认为,ReSharper可以在
$
插值和
string.Format
之间进行前后转换。它可以。在我目前的工作中,我们使用CSScript,它不做字符串插值,所以我总是忽略Resharper关于转换为字符串插值的有用建议。我非常喜欢并一直在我的所有安装、构建和部署脚本中使用它!Oleg的工作和支持都非常出色。@RobertHarvey我对CSScript不太了解,但您可以将c语言级别设置为较低的级别,因此不建议使用插值
$"'{x}'"
string.Format("'{0}'", x)