使用Dump扩展方法与在LINQPad中使用Console.WriteLine有什么区别?

问题描述

当我观看有关Csharp异步和等待概念的教程视频时,我第一次遇到了Dump()方法。讲师使用此方法方法如下:

public string BoilWater()
{
"Start the kettle".Dump();
"Waiting for the kettle".Dump();
"Kettle finished boiling".Dump():
return water;
}

这是此代码输出

Start the kettle
Waiting for the kettle
Kettle finished boiling

尽管我是Csharp的新手,但通过阅读《 Programming C#5.0》一书,我已经对LINQ有一定的了解,并且我对LINQPad有所了解。我已经对此进行了一些搜索,但是老实说,我对Dump()方法找不到太多。 所以,这是我的问题,我们可以只使用Console.WriteLine创建此输出吗?在此处通过Console.WriteLine使用Dump()有什么好处?

解决方法

LINQPad关于转储的内容如下:

LINQPad的Dump方法以其几乎可以吃东西的能力而闻名 任何东西!

它具有众多启发式功能,可以智能地遍历对象图 以获得最佳输出。甚至将懒惰的对象变成 将超链接和异步值放入占位符,占位符的内容 在未来实现!

图像和位图呈现为图像和位图,以及来自 反应性扩展和数据流完全动画。

转储任何WPF或Windows Forms对象,它将实际呈现。

当您需要传统的数据网格或调试器监视窗口时, 也在那里。

因此,Dump()是一个非常有用的扩展,它将帮助我们调试和理解代码的工作方式,或者对我们有用的信息。 Dump()使用LINQPad的输出格式化程序写入输出窗口,并重载以让我们指定标题,并指定最大递归深度以覆盖默认的5级。

typeof (int).Assembly.Dump ("heading");
typeof (int).Assembly.Dump ("number of level we want to dump deep"); 

令人惊讶的是,此方法有几个参数可用,例如description,deep,toDataGrid和exclude,这使得使用Dump变得更加有趣。这些在堆栈溢出页面中有更多描述:here