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 を発行して動的メソッドを吐き出すことができますが、そのすべてが簡単ではありません。

よく知られた方法の 1 つを使用して文字列を解析し、式ツリーを作成することをお勧めします。

または、非推奨の 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 に答える