Могут ли действия точки останова напечатать возвращаемое значение? - PullRequest
1 голос
/ 06 марта 2019

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

double Foo(int bar, int baz)
{
    if (bar < 0)
        return Math.Sqrt((double)(baz - bar) * (baz - bar));

    if (bar % baz == 0)
    {
        if (baz == 3)
        {
            return bar / 2 * baz;
        }
        else
        {
            return Math.Pow(bar, baz);
        }
    }

    return Math.Log(baz, bar);
}

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

Принятый ответ на этот вопрос показывает, что можно проверить возвращаемое значение, используя$ReturnValue ключевое слово в Immediate Window непосредственно перед выходом из метода.

На следующем рисунке показано, чего я хотел бы достичь.

enter image description here

Конечно, это не сработает, и выведите:

DEBUG Result of Foo ("1", false) = ошибка CS0103: имя "$ ReturnValue" не существует в текущемcontext.

Хотя доступно несколько ключевых слов, например $CALLER или $TNAME, я не нашел ничего, что могло бы привести к возвращаемому значению.

Возможно липрint возвращаемое значение в одном действии точки останова?

1 Ответ

2 голосов
/ 06 марта 2019

Вы можете поставить точку останова после вызова метода и добавить действие точки останова следующим образом:

static int Sum(int a, int b) => a + b;

static void Main(string[] args)
{
    int sum = Sum(1,2);
    {} // add breakpoint here
}

и код действия:

Sum returned {x}.

оно будет напечатано в окне вывода:

Возвращенная сумма 3.

ИЛИ

Установите точку останова для возвращаемой части вашего метода (в данном случае a + b) и добавьте действие, подобное

$FUNCTION result is {a + b}

вывод будет:

MyApp.Program.Sum (int, int) результат будет 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...