>>> def a():
>>> print "a executed"
>>> return []
>>> x =a()
a executed
>>> def b(m=[]):
>>> m.append(5)
>>> print m
>>> b(x)
[5]
>>> b(x)
[5, 5]
Отметьте свой класс с помощью
[System.Diagnostics.DebuggerDisplay("{ToString()}")]
Тест:
[System.Diagnostics.DebuggerDisplay("{ToString()}")]
class MyClass
{
private string _foo = "This is the text that will be displayed at debugging"
public override string ToString()
{
return _foo;
}
}
Теперь, когда вы наводите указатель мыши на переменную с помощью мыши, он будет показывать This is the text that will be displayed at debugging
.
То, что вы ищете, это DebuggerDisplayAttribute
:
http://www.codeproject.com/Articles/117477/Using-DebuggerDisplayAttribute
Используйте приведенную выше ссылку, чтобы узнать, как это делается, а затем примените ее к вашему классу, используя метод ToString()
, чтобы управлять показанным. Я только использовал свойства, не уверен, что вы можете вводить классы.
Имеется DebuggerDisplayAttribute
, который позволяет влиять на отображение. Это позволяет вам писать довольно сложные выражения для вывода отладочного вывода, хотя не рекомендуется делать это .
Однако, если вы переопределили ToString
, отладчик задокументировано, чтобы отобразить это по умолчанию. Может быть, что-то не так с кодом?
this
доступен для использования в выражении («имеет доступ»), и вам не нужно вводить его («подразумевается»). В основном, что происходит с this
, например. внутри метода класса.
– Jon
26 July 2011 в 12:52
ToString()
выбрасывает исключение , то отладчик VS не отображает это значение. DebuggerDisplayAttribute
заставит отображать сообщение об исключении. Но обычно вам не нужно это делать.
– swdev
3 October 2015 в 08:39
в объекте Переопределите .ToString следующим образом:
public class MyObject
{
public int Property1{ get; set; }
public string Property2{ get; set; }
public string Property3 { get; set; }
public override string ToString()
{
return Property3;
}
}
Это вернет свойство3 в качестве значения ToString ()
Если вы используете визуальную студию, вы можете добавить watch @ runtime om в строку yourvariable.ToString (), это будет отображаться в нижней части экрана при попадании на точку останова
Выход ToString
должен быть по умолчанию, который вы видите при отладке.
Его можно переопределить с помощью атрибута DebuggerDisplay
(см. MSDN ).
Я предпочитаю переопределять метод ToString
, потому что он проще и универсальнее, потому что он помогает при записи в файлы журнала.
Какой вывод вы видите? Если вы получите имя типа, вы увидите по умолчанию ToString
.