1

是否可以让 Visual Studio 进行数学表达式评估/简化?

例如,如果我输入“-0.005 + -0.345”,我如何让 Visual Studio 减少它(即用减少量替换它)?我必须写一个宏吗?如果是这样,是否有任何预先存在的宏来执行这种类型的表达式减少?

为了清楚起见,我希望能够突出显示一个表达式并将其替换为缩减的结果。许多人建议立即窗口,但我看不出这如何足够?

编辑我应该指出,这是在编辑未运行或调试时。即时窗口几乎没有用处。我也认为这是一个语言中立的问题。我当然有兴趣看到我发布的宏的替代宏。

编辑一次......去两次......(即在我考虑接受我自己的答案之前有任何其他建议吗?)

4

4 回答 4

1

感谢您的上述回答。

可能有更好的方法,但这里有一个快速而肮脏的宏,可以满足我的需要。

需要添加对 System.Data 和 System.XML 命名空间的引用。

突出显示要评估的表达式并运行宏(它使用 DataTable 中的计算列来评估表达式。)它将用简化的结果替换表达式。

编辑- 下面更新了代码。它对于减少大量表达式非常有效。正如其他人指出的那样,有即时窗口,但这不适用于编辑目的。该宏是基本表达式“()、+、-、*、/”的独立于语言的解决方案。


Sub Eval()
  Dim ts As EnvDTE.TextSelection = DTE.ActiveDocument.Selection
  Using dt As New DataTable()
    dt.Columns.Add("Expression", GetType(Double), ts.Text)
    dt.Rows.Add(dt.NewRow)
    ts.Text = CDbl(dt.Rows(0).Item("Expression"))
  End Using
End Sub
于 2009-06-10T21:26:56.667 回答
0

默认情况下,Visual Studio 不会进行任何数学表达式求值/归约。我不确定您是否可以通过 ReSharper 之类的项目获得对此的支持,但如果可用,它将包含在加载项中。

此外,了解您正在使用的语言会有所帮助吗?

某些语言可能会在这方面有所帮助。例如,F# 可以轻松地通过交互式窗口在 IDE 中评估表达式,并将结果显示出来。这可以很容易地添加回您的代码中,但它似乎并不完全是您正在寻找的。

于 2009-06-10T20:37:51.663 回答
0

这是一个答案:是的,可以使用以下步骤。(虽然在技术上执行您的要求,但我不确定它是否会非常有用。:-)

  1. 在您的程序中设置一个断点,当您调试程序时可能会遇到该断点。
  2. 然后,在 Visual Studio 调试器下运行您的程序。
  3. 当断点被命中时,打开 Watch 窗口。
  4. 在 Watch 窗口中,通过单击 Name 列添加新的手表。
  5. 输入您的表达式“-0.005 + -0.345”(不带引号),然后按 [Enter]。...您应该看到 Value 列填充了 -0.35。

当然,这不在编辑器窗口的上下文中......大概是您想要执行缩减的地方。再说一次,我想不是很有用。加载项是在编辑器窗口中执行此操作的可能方式。

于 2009-06-10T20:54:23.690 回答
0

您可以直接转到即时窗口并键入“?<yourExpression>”

于 2009-06-10T21:54:11.197 回答