Можно ли автоматически выводить значение в C# Interactive (REPL), как это делает Immediate?

Я начал использовать C# Interactive, и мне нравится тот факт, что я могу просматривать и изучать некоторые функции API, как я делаю с Immediate без необходимости запускать и отлаживать мою программу.

Проблема в том, что он не выводит информацию, как Immediate, если я не делаю команду с именем переменной:

 > string.Format("{0,15}", 10m);         //hit enter, here there is no output
 > var a = string.Format("{0,15}", 10m); //hit enter so...
 > a                                     // hit enter and...
  "        10"                           //...here the value is shown
 >

Есть ли способ сделать C# Interactive выводить значения в каждой оценке, как Immediate делает (и без писать больше кода для этого, как Console.Write)?

3 ответа

Решение

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

string.Format("{0,15}", 10m);

сделай это:

string.Format("{0,15}", 10m)

Смотри документацию

Когда вы закончите с утверждением (например, заканчивая ;), что необходимо при объявлении переменных, вы не получите никакого вывода, так как он должен иметь только побочные эффекты.

Когда вы заканчиваете с выражением (например, не заканчивается ;), вы получите результат этого выражения. Обходной путь:

var a = string.Format("{0,15}", 10m); a

уведомление a в качестве выражения в конце вы получите его значение.


Лично для многострочных фрагментов, которые я хочу проверить, у меня обычно есть res переменная:

object res;
// code where I set res = something;
using (var reader = new System.IO.StringReader("test"))
{
    res = reader.ReadToEnd();
}
res

Затраты на печать происходят один раз за сеанс Visual Studio, но затем я просто использую Alt+↑, чтобы выбрать одну из предыдущих записей.

Я знаю, что это слишком поздно, но всем, кто ищет ответ на аналогичный вопрос. На всякий случай, если вы захотите запустить for цикл и печать значений в интерактивном окне C #, вы можете использовать Print() метод:

      string Characters = "Hello World!";
> foreach (char _Char in Characters)
. {
.     Print(_Char);
. }
'H'
'e'
'l'
'l'
'o'
' '
'W'
'o'
'r'
'l'
'd'
'!'
Другие вопросы по тегам