将数学运算符分配给变量 - VB

时间:2014-03-06 21:43:11

标签: vb.net variables operator-keyword

我正在为一个班级做一个非常简单的项目,只是想知道我是否以正确的方式进行。我们正在修复Windows计算器。

对于每个数学运算符,我的代码如下:

Private Sub btnPlus_Click(sender As Object, e As EventArgs) Handles btnPlus.Click
    If opPressed = True Then
        Select Case (opType)
            Case "+"
                txtField.Text = CStr(CDbl(opStore) + CDbl(txtField.Text))
            Case "-"
                txtField.Text = CStr(CDbl(opStore) - CDbl(txtField.Text))
            Case "*"
                txtField.Text = CStr(CDbl(opStore) * CDbl(txtField.Text))
            Case "/"
                txtField.Text = CStr(CDbl(opStore) / CDbl(txtField.Text))
        End Select
        opPressed = True
        opType = "+"
    Else
        opStore = txtField.Text
        txtField.Clear()
        opPressed = True
        opType = "+"
    End If
End Sub

有没有办法可以简单地将运算符存储在变量中,然后有一行:txtField.Text = CStr(CDbl(opStore) variableHere CDbl(txtField.Text))?我已经存储了使用的运算符,所以有没有简单的方法将其转换为字符串,并将其用作运算符?

2 个答案:

答案 0 :(得分:2)

如果你想要不同的东西,你可以有一个类型为Dictionary(Of String, Func(Of Double, Double, Double))的成员变量来将字符串运算符与运算符的实际逻辑相关联:

Private _ops = New Dictionary(Of String, Func(Of Double, Double, Double))() From {
    {"+", Function(x, y) x + y},
    {"-", Function(x, y) x - y},
    {"*", Function(x, y) x * y},
    {"/", Function(x, y) x / y}
}

然后在按钮点击处理程序中使用它:

Dim op = _ops(opType)
txtField.Text = CStr(op(CDbl(opStore), CDbl(txtField.Text))

答案 1 :(得分:0)

您可以使用NCalc - http://ncalc.codeplex.com/

string fullExpression;
string opType = "+";

fullExpression = opStore + opType + txtField.Text;
Expression e = new Expression(fullExpression);

txtField.Text = e.Evaluate().ToString();