字符串插值内部的字符串插值
本文关键字:字符串 插值 内部 | 更新日期: 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" };
然后输出将是"汽车是黑色的"。
我还没有测试过这个代码。