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

Аналогично Locane для окон:

import subprocess  
subprocess.call('timeout /T 30')
21
задан MedicineMan 8 January 2010 в 20:32
поделиться

10 ответов

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

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

? myArray
32
ответ дан BFree 8 January 2010 в 20:32
поделиться

Я использую:

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

Плохой BitConverter, всегда забытый.

12
ответ дан Ben Lesh 8 January 2010 в 20:32
поделиться

где a - массив

?a
10
ответ дан Paul Creasey 8 January 2010 в 20:32
поделиться

Если вы хотите напечатать, например, массив m типа float[4][4], просто наберите: (float(*)[4][4])m

0
ответ дан Mano-Wii 8 January 2010 в 20:32
поделиться

Помните, что вы можете ссылаться на метод в отлаживаемой программе. У меня есть служебный метод (скажем, в классе 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();
    }

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

MyDebug.ToReadableString(data)
2
ответ дан Technophile 8 January 2010 в 20:32
поделиться

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

System.Text.ASCIIEncoding.ASCII.GetString(((((System.IO.MemoryStream)(s)))._buffer))
1
ответ дан Mike Kelly 8 January 2010 в 20:32
поделиться
String.Join("; ", myArray);
8
ответ дан Denise Skidmore 8 January 2010 в 20:32
поделиться

Для обоих окон 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}
3
ответ дан Emmanuel 8 January 2010 в 20:32
поделиться

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

0
ответ дан mletterle 8 January 2010 в 20:32
поделиться

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

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

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

2
ответ дан Ammar 8 January 2010 в 20:32
поделиться