是否可以像即时一样在 C# 交互 (REPL) 中自动输出值



我开始使用C# Interactive,并且喜欢这样一个事实,即我可以像Immediate一样浏览和探索一些API功能,而无需运行和调试我的程序。

问题是它不会像 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
 >

有没有办法像Immediate那样C# Interactive输出每个评估中的值(并且不像Console.Write那样为此编写更多代码(?

是的,要输出计算表达式的结果,只需不要在末尾放置分号。在您的示例中,而不是这个:

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'
'!'

相关内容

  • 没有找到相关文章

最新更新