你如何使用逐字string插值?

在C#6中有一个新特性:插入string。

这些让你把expression式直接放到代码中,而不是依靠索引:

string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); 

变为:

 string s = $"Adding \"{x}\" and {this.Y()} to foobar."; 

然而,我们有很多使用逐字串(主要是SQL语句)的多行string:

 string s = string.Format(@"Result... Adding ""{0}"" and {1} to foobar: {2}", x, this.Y(), x.GetLog()); 

将这些恢复为常规string似乎很麻烦:

 string s = "Result...\r\n" + $"Adding \"{x}\" and {this.Y()} to foobar:\r\n" + x.GetLog().ToString(); 

我如何同时使用逐字string和插入string?

您可以将$@前缀应用于同一个string:

 string s = $@"Result... Adding ""{x}"" and {this.Y()} to foobar: {x.GetLog()}";