如何使用逐字字符串插值?

在 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();

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

32540 次浏览

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

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

因为是 在 C # 6中引入,所以 内插式逐字字符串必须从标记 $@但是从 C # 8开始,您可以使用 ABC0或 @$开始。