Выполнение оценки/сокращения выражений в Visual Studio 2008

StackOverflow https://stackoverflow.com/questions/977998

Вопрос

Можно ли заставить Visual Studio выполнять оценку/сокращение математических выражений?

Например, если я наберу «-0,005 + -0,345», как мне заставить Visual Studio уменьшить это значение (т. е.заменить его сокращением)?Нужно ли писать макрос?Если да, то существуют ли какие-либо уже существующие макросы для такого типа сокращения выражений?

Чтобы внести ясность: я хочу иметь возможность выделить выражение и заменить его уменьшенным результатом.Многие предлагают немедленное окно, но я не понимаю, насколько этого будет достаточно?

Редактировать Я должен отметить, что это происходит при редактировании, а не при запуске или отладке.Непосредственное окно практически бесполезно.Я также считаю этот вопрос нейтральным к языку.Мне, безусловно, было бы интересно увидеть макросы, альтернативные тому, который я опубликовал.

Редактировать Собираюсь один раз...Иду дважды...(т.е.есть еще какие-нибудь предложения, прежде чем я рассмотрю возможность принятия собственного ответа?)

Это было полезно?

Решение

Спасибо за приведенные выше ответы.

Вероятно, есть способы получше, но вот быстрый и грязный макрос, который делает то, что мне нужно.

Необходимо добавить ссылки на пространства имен 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

Другие советы

Visual Studio по умолчанию не выполняет никаких математических вычислений/сокращений.Я не уверен, сможете ли вы получить поддержку для этого с помощью таких продуктов, как ReSharper, но если она доступна, она будет в надстройке.

Кроме того, было бы полезно знать, на каком языке вы работаете?

Некоторые языки могут быть полезны в этой области.F#, например, упрощает оценку выражений в IDE через интерактивное окно и отображает результат.Это можно легко добавить обратно в ваш код, но, похоже, это не совсем то, что вы ищете.

Вот ответ:Да, это возможно, выполнив следующие действия.(Хотя технически вы выполняете то, о чем вы просите, я не уверен, что это будет чрезвычайно полезно.:-)

  1. Установите точку останова в своей программе, которая может сработать при отладке программы.
  2. Затем запустите программу в отладчике Visual Studio.
  3. Когда точка останова будет достигнута, откройте окно Watch.
  4. В окне «Часы» добавьте новые часы, щелкнув столбец «Имя».
  5. Введите выражение «-0,005 + -0,345» (без кавычек), затем нажмите [Enter]....Вы должны увидеть, что столбец «Значение» заполнен значением -0,35.

Конечно, это не в контексте окна редактора...предположительно, именно здесь вы и захотите выполнить сокращение.Опять же, я думаю, это не очень полезно.Надстройка — вероятный способ сделать это в окне редактора.

Вы можете просто перейти в ближайшее окно и ввести «?<вашевыражение>».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top