163

在 C# 6 中有一个新特性:内插字符串。这些使您可以将表达式直接放入代码中。

而不是依赖索引:

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

以上变为:

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

但是,我们使用逐字字符串(主要是 SQL 语句)有很多跨多行的字符串,如下所示:

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

将这些恢复为常规字符串似乎很混乱:

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

如何同时使用逐字字符串和插值字符串?

4

1 回答 1

243

您可以将$@前缀应用于同一字符串:

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

由于在 C# 6 中引入插值逐字字符串必须以标记开头$@但从 C# 8 开始,您可以使用$@@$

于 2015-07-26T15:12:37.683 回答