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