【问题标题】:Is it possible to automatically output value in C# Interactive (REPL) like Immediate does?是否可以像 Immediate 一样在 C# Interactive (REPL) 中自动输出值?
【发布时间】:2016-05-29 04:52:00
【问题描述】:

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

问题是它不会像立即一样输出信息,除非我使用变量名执行命令:

 > 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# InteractiveImmediate 那样在每次评估中输出值(并且无需为此编写更多代码,例如Console.Write)?

【问题讨论】:

    标签: c# visual-studio-2015 roslyn read-eval-print-loop c#-interactive


    【解决方案1】:

    是的,要输出评估表达式的结果,只需不要在末尾放置分号。在你的例子中,而不是这个:

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

    这样做:

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

    See the documentation

    【讨论】:

    • 哇。我怎么错过了。谢谢。
    【解决方案2】:

    当您完成一个语句(例如以; 结尾)时,您在声明变量时必须这样做,您不会得到任何输出,因为它应该只有副作用。

    当您以 表达式 结尾(例如,不以 ; 结尾)时,您会得到该表达式的结果。解决方法是:

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

    注意a 作为末尾的表达式,您将打印出它的值。


    个人来说,对于我要测试的多行sn-ps,我通常有一个res变量:

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

    每个 Visual Studio 会话都会发生一次输入开销,但我只需使用 Alt+ 来选择之前的条目之一。

    【讨论】:

    • 不错。谢谢。但是@Crowcoder 给出的答案更像是我想要的。赞成。
    • 好的,我现在明白你的问题比说的简单。我的回答是,您打算将值存储在变量中并打印出来,而不是仅仅打印出来。
    • 很抱歉造成混乱。
    【解决方案3】:

    我知道这为时已晚,但任何正在寻找类似问题答案的人。万一您想在 C# 交互式窗口中运行 for 循环并打印值,您可以使用 Print() 方法:

    string Characters = "Hello World!";
    > foreach (char _Char in Characters)
    . {
    .     Print(_Char);
    . }
    'H'
    'e'
    'l'
    'l'
    'o'
    ' '
    'W'
    'o'
    'r'
    'l'
    'd'
    '!'
    

    【讨论】:

    • 哇!!这应该是公认的答案,我找了好几个月!!
    • 太棒了!从哪里可以得到这个Print 函数的文档?
    • 我在任何地方都找不到任何文档,我只是偶然发现了这个 :-)
    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多