字符串插值内的字符串插值

时间:2015-11-20 14:42:22

标签: c# string-interpolation c#-6.0

是否可以使用您想要插入的字符串格式的变量。

public class Setting
{
    public string Format { get; set; }
}


var setting = new Setting { Format = "The car is {colour}" };
var colour = "black";
var output = $"{setting.Format}";

预期输出

  

“汽车是黑色的”。

4 个答案:

答案 0 :(得分:8)

你做不到。字符串插值是一种纯粹的编译时功能。

答案 1 :(得分:3)

不,你不能做到这一点,但是你可以通过一种稍微不同的方法实现同样的目标,我已经开始喜欢:

public class Setting
{
    public Func<string, string> Format { get; set; }
}

然后您可以将字符串参数传递给Format

var setting = new Setting { Format = s => $"The car is {s}" };
var output = setting.Format("black");

答案 2 :(得分:3)

为什么不呢? 首先,在C#中声明它之前,你不能使用局部变量。所以 首先在使用之前声明colour。然后&#34;插入&#34;分配给Format的字符串已完成。

var colour = "black";
var setting = new Setting { Format = $"The car is {colour}" };
var output = $"{setting.Format}";
Console.WriteLine(output);

输出:

  

汽车是黑色的。

答案 3 :(得分:1)

您可以对其进行轻微更改,如下所示:

$rs = $conexao->Query("SELECT * FROM `table` WHERE 1;");
if ($rs)
    print $rs->affected_rows;

然后输出将是“汽车是黑色的”。

我还没有测试过这段代码。

相关问题