【问题标题】:Assign a math operator to a variable - VB将数学运算符分配给变量 - VB
【发布时间】:2014-03-06 21:43:11
【问题描述】:

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

【问题讨论】:

  • 您已经以正确的方式进行。可以按照您的要求做,但这并不“容易”。
  • 好的,谢谢。你能为我指出另一种方法的正确方向吗?我很想检查一下,即使这不是实施的理想情况。

标签: vb.net variables operator-keyword


【解决方案1】:

如果你想要一些不同的东西,你可以有一个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))

【讨论】:

  • 比我一直在做的要优雅得多!谢谢!
【解决方案2】:

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

string fullExpression;
string opType = "+";

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

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

【讨论】:

  • 谢谢!由于我需要为我正在拍摄的课程提交此内容以避免外部图书馆,但我可能不得不在空闲时间玩一下 NCalc - 看起来很酷!
猜你喜欢
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 2021-08-05
  • 2020-01-18
  • 1970-01-01
  • 2020-08-07
  • 2014-12-06
相关资源
最近更新 更多