В чем разница между использованием метода расширения Dump() и использованием Console.WriteLine() в LINQPad?

Пока я смотрел обучающее видео о концепциях Csharp async и await, я впервые столкнулся с методом 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, у меня уже есть некоторые знания о LINQ из книги Programming C# 5.0, и я немного работал с LINQPad. И я провел некоторый поиск по этому поводу, но, честно говоря, я не смог найти много о методе Dump(). Итак, вот мой вопрос, можем ли мы просто использовать Console.WriteLine для создания этого вывода? В чем преимущество использования Dump() над Console.WriteLine здесь?


person Roksana    schedule 04.11.2020    source источник
comment
Не могу решить, должен ли он быть дубликатом stackoverflow.com/questions/3555317/linqpad -extension-methods или объяснение того, как Console.WriteLine использует дамп в LinqPad, будет хорошим ответом... Оставлю в качестве комментария, так как я на самом деле не знаю точной разницы.   -  person Alexei Levenkov    schedule 04.11.2020
comment
Согласно нижней части страницы linqpad, метод LINQPad Dump славится своей способностью потреблять почти что-либо! Настроенный с помощью многочисленных эвристик, он интеллектуально обходит графы объектов для получения наилучших результатов. Он даже превращает ленивые объекты в гиперссылки, а асинхронные значения — в заполнители, содержимое которых материализуется в будущем!. Между тем, Console.WriteLine просто вызовет метод ToString переданного объекта (если это еще не строка). В вашем примере Dump не дает никаких преимуществ, которые я вижу.   -  person Rufus L    schedule 04.11.2020


Ответы (1)


Вот что LINQPad говорит о дампе:

Метод дампа LINQPad известен тем, что может съесть практически все!

Настроенный с помощью многочисленных эвристик, он интеллектуально обходит графы объектов для получения наилучших результатов. Он даже превращает ленивые объекты в гиперссылки, а асинхронные значения — в заполнители, содержимое которых материализуется в будущем!

Изображения и растровые изображения отображаются как изображения и растровые изображения, а типы из Reactive Extensions и Dataflow полностью анимируются.

Сбросьте любой объект WPF или Windows Forms, и он действительно отобразится.

И когда вам нужна традиционная сетка данных или окно просмотра отладчика, они тоже есть.

Итак, Dump() — невероятно полезное расширение, которое поможет нам отладить и понять, как работает код или какая информация нам доступна. Dump() записывает в окно вывода с помощью средства форматирования вывода LINQPad и перегружен, чтобы позволить нам указать заголовок, а также указать максимальную глубину рекурсии, чтобы переопределить 5 уровней по умолчанию.

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

Удивительно, но для этого метода доступно несколько параметров, таких как описание, глубина, toDataGrid и exclude, которые делают работу с Dump более увлекательной. Они более подробно описаны на этой странице переполнения стека: здесь

person Roksana    schedule 04.11.2020