Аналогично Locane для окон:
import subprocess
subprocess.call('timeout /T 30')
myArray.ToList().ForEach(Console.WriteLine);
Честно говоря, я не думаю, что это сработает в ближайшем окне. Это хороший трюк, чтобы напечатать все это в одну строку, но я думаю, что для непосредственного окна все, что вам нужно, это:
? myArray
Я использую:
BitConverter.ToString(bytes); //output: 4A-0B-11-13 etc.
Плохой BitConverter, всегда забытый.
Если вы хотите напечатать, например, массив m
типа float[4][4]
, просто наберите: (float(*)[4][4])m
Помните, что вы можете ссылаться на метод в отлаживаемой программе. У меня есть служебный метод (скажем, в классе 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)
У меня была эта проблема с байтовым массивом, содержащимся в MemoryStream - я обнаружил, что это работает для просмотра содержимого MemoryStream в окне Visual Studio 2010 Watch:
System.Text.ASCIIEncoding.ASCII.GetString(((((System.IO.MemoryStream)(s)))._buffer))
String.Join("; ", myArray);
Для обоих окон 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}
Может быть проще просто использовать вкладку часов. Но простой ввод имени массива в непосредственной вкладке должен вернуть содержимое в несколько полезном формате.
Вы всегда можете создать вторую переменную с нужным вам содержимым и проверить ее значение.
var ids = people.Select(s => s.id).ToList();
Вернет все идентификаторы, которые вы пытаетесь увидеть.