我对动态字符串插值有一个问题。
下面的方法是可行的。
FormattableString str= $"XYZ{(dynamicvalue * 58) / 5}ABC";
Console.WriteLine(str);
Output = XYZ34ABC
我想创建一个扩展方法来计算表达式。就像这样。
string formula ="XYZ{(dynamicvalue * 58) / 5}ABC";
FormattableString str = $formula ;
尝试了不同的方法,但都不起作用。
谢谢
发布于 2019-08-07 17:07:59
我不能完全确定,你想要实现什么。你可以随时使用
string formula = $"XYZ{(dynamicvalue * 58) / 5}ABC"
并将计算后的字符串放在手边。
但是,如果你已经有了一个字符串,那么这些值来自哪里呢?如果你把它放在字符串中,"(dynamicvalue * 58) / 5“只是字符,与变量没有任何联系。如果你把它放在一个扩展方法中,编译器就无法确定,运行时也无法确定dynamicValue的实际值是什么。但是,如果将值传递给扩展方法,则需要执行以下操作:
public static string EvaluateString<T,U>(this string, Func<T,U> evaluation, T value)
{
return String.Format(string, evaluation(value));
}
你的名字是这样的
string evString = "XYZ{0}ABC".Evaluate(x => x * 58 / 5,dynamicvalue);
但是我认为只使用
string formula = $"XYZ{(dynamicvalue * 58) / 5}ABC"
https://stackoverflow.com/questions/57398571
复制