我正在为一个班级做一个非常简单的项目,只是想知道我是否以正确的方式进行。我们正在修复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))
?我已经存储了使用的运算符,所以有没有简单的方法将其转换为字符串,并将其用作运算符?
答案 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();