Подтвердить что ты не робот

Распечатайте содержимое массива (код - одна строка, для использования в окне Immediate визуальной студии)

Можете ли вы написать удобную строку кода, которая печатает содержимое массива?

Я буду использовать это в окне Immediate Window Visual Studio 2008, поэтому он действительно должен работать в этом окне. Возможно, я отказался от некоторых требований, но это в значительной степени то, что я пытаюсь сделать.

4b9b3361

Ответ 1

myArray.ToList().ForEach(Console.WriteLine);

Честно говоря, я не думаю, что это будет работать в ближайшем окне. Это хорошая трюк, чтобы напечатать все в одной строке, но я думаю, что для немедленного окна все, что вам нужно, это следующее:

? myArray

Ответ 2

Я использую:

BitConverter.ToString(bytes); //output: 4A-0B-11-13  etc.

Плохой битконвертер, всегда забытый.

Ответ 3

где a - массив

?a

Ответ 5

Для обоих окон Watch и Immediate в Visual Studio будет использоваться строка, возвращаемая ToString() для объекта.

Таким образом, вы можете переопределить ToString(), если хотите и отформатировать читаемое человеком представление любого из ваших классов, чтобы они отображали необходимую информацию в окнах Watch или Immediate во время операций отладки.

Например,

public class Foo
{
   public String Bar { get; set; }
   private Int32 _intValue;
   public Int32 Value { get { return _intValue; } }
   override public ToString()
   {
      return "Bar: " + Bar + " has Value: " + Value;
   }
}

Итак, если вы создаете массив объектов Foo с именем fooArray, набрав? fooArray в окне Immediate отобразит все объекты Foo с возвращаемым значением ToString() для каждого в фигурных скобках. Что-то вроде этого:

? fooArray
{Foo[2]}
[0]: {Bar: hi has Value: 1}
[1]: {Bar: there has Value: 2}

Ответ 6

Помните, что вы можете ссылаться на метод в программе, которую вы отлаживаете. У меня есть метод утилиты (скажем, в классе MyDebug):

    public static string ToReadableString(byte[] data)
    {
        int length = data.Length;
        var sb = new StringBuilder(length);
        for (int index = 0; index < length; ++index)
        {
            char ch = (char)data[index];
            sb.Append(Char.IsControl(ch) ? '.' : ch);
        }
        return sb.ToString();
    }

и (поскольку мой массив называется данными), добавьте оператор Watch:

MyDebug.ToReadableString(data)

Ответ 7

У меня была эта проблема с массивом байтов, содержащимся в MemoryStream, - я нашел, что это сработало для просмотра содержимого MemoryStream в окне Visual Studio 2010 Watch:

System.Text.ASCIIEncoding.ASCII.GetString(((((System.IO.MemoryStream)(s)))._buffer))

Ответ 8

Вы всегда можете создать вторую переменную с нужным контентом и проверить ее значение.

var ids = people.Select(s => s.id).ToList();

Вернет все идентификаторы, которые вы пытаетесь увидеть.

Ответ 9

Может быть проще просто использовать вкладку "Часы". Но просто введите имя массива в непосредственной вкладке, чтобы вернуть содержимое в несколько полезный формат.