后端口C#插值字符串运算符$
我有一些代码想在旧版本的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#中 事实上,字符串插值版本只是编译器的语法糖。如果对生成的程序
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)