我想做相当于:
object result = Eval("1 + 3");
string now = Eval("System.DateTime.Now().ToString()") as string
Run Code Online (Sandbox Code Playgroud)
在Biri的链接之后,我得到了这个片段(修改后删除了过时的方法ICodeCompiler.CreateCompiler():
private object Eval(string sExpression)
{
CSharpCodeProvider c = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.CompilerOptions = "/t:library";
cp.GenerateInMemory = true;
StringBuilder sb = new StringBuilder("");
sb.Append("using System;\n");
sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return " + sExpression + "; \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");
CompilerResults cr = c.CompileAssemblyFromSource(cp, sb.ToString());
if (cr.Errors.Count > 0)
{
throw …Run Code Online (Sandbox Code Playgroud) 有没有人知道比NCalc更新的表达式评估器?最后一个版本是在2011年,一个(非常)快速的谷歌搜索几乎没有从我能看到的内容返回.
可能重复:
我需要一个快速的运行时表达式解析器
如果有人在我的页面上的文本框中键入x*y ^ z来计算后面代码中的等式并得到结果,我怎么做呢?
我正在使用C#编写计算器.
namespace Calculator
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void Total(string num)
{
lblTotal.Content = Convert.ToString(lblTotal.Content) + num;
}
private void one_Click(object sender, RoutedEventArgs e)
{
Total( Convert.ToString(1) );
}
private void two_Click(object sender, RoutedEventArgs e)
{
Total( Convert.ToString(2) );
}
private void three_Click(object sender, RoutedEventArgs e)
{
Total( Convert.ToString(3) );
}
private void four_Click(object sender, RoutedEventArgs e)
{
Total( Convert.ToString(4) );
}
private void five_Click(object sender, RoutedEventArgs e)
{
Total( Convert.ToString(5) …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×1
equation ×1
equations ×1
eval ×1
evaluation ×1
expression ×1
math ×1
ncalc ×1
reflection ×1
wpf ×1