PHP var_dump в С# для дампа массива или объектов?

Мне нужно сбросить содержимое массивов или объектов, и мне интересно узнать, есть ли в С# у нас что-то вроде PHP-инструкции var_dump.

Цель состоит в том, чтобы не создавать цикл для использования каждого свойства или содержимого массива или объекта и печатать с помощью Console.WriteLine.

Ответ 1

Ближайшая вещь, вероятно, будет string.Join:

Console.WriteLine(string.Join(", ", myEnumOfObjects));

Он не будет автоматически включать "каждое свойство или содержимое массива или объекта" в выходной файл, однако - если вы хотите, чтобы это произошло, вам нужно переопределить метод ToString для объекта, который был напечатан:

class MyObject {
    public string Name {get;set;}
    public DateTime Dob {get;set;}
    public string ToString() {
        return string.Format("{0} - {1}", Name, Dob);
    }
}

Ответ 2

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

или любой из них:

Возможно, вы используете Console.WriteLine для печати массива.

int[] array = new int[] { 1, 2, 3 };
foreach(var item in array)
{
    Console.WriteLine(item.ToString());
}

Если вы не хотите, чтобы каждый элемент в отдельной строке использовал Console.Write:

int[] array = new int[] { 1, 2, 3 };
foreach(var item in array)
{
    Console.Write(item.ToString());
}

или string.Join(в .NET Framework 4 или новее):

int[] array = new int[] { 1, 2, 3 };
Console.WriteLine(string.Join(",", array));

из этого вопроса: Как печатать содержимое массива по горизонтали?

Ответ 3

Я думаю, что нет прямого эквивалента функции php var_dump.

Вы должны использовать отражение для записи эквивалентной функции.

Если вы выполняете поиск в Интернете, вы можете легко найти код, который это делает.

Например: http://ruuddottech.blogspot.fr/2009/07/php-vardump-method-for-c.html

Ответ 4

Я знаю, что вы хотите избежать цикла, но если это просто для написания нескольких строк кода, ниже приведен один цикл liner, который может позволить вам печатать данные с одной строкой для объектов, расширяющих метод ForEach

List<string> strings=new List<string>{"a","b","c"};//declare one

strings.ForEach(x => Console.WriteLine(x));//single line loop...for printing and is easier to write