我开始使用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'
'!'