0

我做了一个 GUI 计算器。因此,当有人按下按钮时,数字和符号会显示在标签中,然后当他们按下 Enter 时,计算机会捕获字符串,这就是我需要帮助的地方。我知道在 Python 中有一个可以使用的 eval 语句,在 C# 中有类似的东西。

如果有帮助,这是代码。具体看方法button_click

public class form1 : Form
{
    private Label lab;
    private Button button2;
    private Button button;
    private Button plus;
    private MathFunctions.MathParser calc;

    public static void Main()
    {
        Application.Run(new form1());
    }

    public form1()
    {
       // Initialize controls
       ...
    }

    private void button_Click(object sender,System.EventArgs e)
    {
        string answer = lab.Text;
    }

    private void button2_Click(object sender,System.EventArgs e)
    {
        lab.Text = lab.Text + "2";
    }

    private void button_plus(object sender,System.EventArgs e)
    {
        lab.Text = lab.Text + "+";
    }
}
4

2 回答 2

1

在 C# 中,您没有 eval。原则上,您可以在运行时生成代码、编译它、制作程序集然后执行代码,或者您可以通过发出 IL 来生成动态方法,但所有这些都不是很直接。

我建议您只使用一种众所周知的方法解析字符串,然后创建表达式树

或者,您可以仅将已弃用的 javascript 引擎用于解析表达式。

请参阅评估数学表达式的最佳和最短方法

于 2012-05-02T19:46:26.620 回答
0

既然你熟悉 python 为什么不使用它呢?在您的 C# 代码中创建 IronPyton 脚本引擎对象。这是一个片段:

string expression = lab.Text; // @"540 +  4 / 3" try to test

ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString(expression, SourceCodeKind.Expression);

int result = source.Execute<int>();
于 2012-05-02T19:52:10.743 回答