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

本文关键字:字符串 插值 内部 | 更新日期: 2023-09-27 18:22:49

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

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

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

预期输出

"这辆车是黑色的"。

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

你不能那样做。字符串插值是纯粹的编译时特性。

不,你不能这样做,但你可以用一种稍微不同的方法来实现同样的效果,我开始喜欢这种方法:

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");

为什么不呢
首先,在C#中声明局部变量之前,不能使用它。所以在使用colour之前,先声明它。然后"插值"分配给Format的字符串,就完成了。

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

输出:

这辆车是黑色的。

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

public class Setting
{
    public string Format
    { 
        get
        {
            return String.Format(this.Format, this.Colour);
        }
        set
        {
            Format = value;
        }
    }
    public string Colour { get; set; }
}

var setting = new Setting { Format = "The car is {0}", Colour = "black" };

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

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