是否可以拥有一个带有字符串格式的变量,你想要进行插值。
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 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");
Setting { Format = s => string.Format("这辆车是{0}", s) };
。 - Ron Beyer为什么不呢?
首先,在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" };
string.Format
,如果你有变量而不是常量。但你不能两全其美。 - M.kazem AkhgaryFormatWith
或类似的方法。请注意,这些自定义函数中的每一个都有略微不同的行为。另请参见命名格式Redux。 - Brian