问题描述
在C#中,单步调试程序时,鼠标指上去就可以看到对象的值,比如string类型,鼠标指上去就可以看到字符串的类容,而自定义的class,当鼠标指向对象时默认是看不到类的属性的值的,只能将类展开才能看到,有没有办法可以在鼠标悬停上去后或者在局部变量窗口中直接能看到对象中感兴趣的属性的值呢?
实现方法
C#在System.Diagnostics中提供了一些调试辅助的类,我们这里要实现前面所说的功能的类就是DebuggerDisplayAttribute,新建一个测试调试的类如下:
class DebugClass
{
public string item1 { get; set; }
public string item2 { get; set; }
}
此时调试时,创建该类的对象,当鼠标悬停到对象上是无法看待item1和item2的值的,如下图:
我们对以上类的定义修改如下:
[DebuggerDisplay("item1 = {item1}, item2 = {item2}")]
class DebugClass
{
public string item1 { get; set; }
public string item2 { get; set; }
}
然后,再调试时,就可以看到定义好的属性值了,如下图:
可以看到,鼠标悬停以及在局部变量窗口中都能看到,属性的值。
总结
以上介绍了C#中一个调试时,显示对象关注的变量的小技巧,这个技巧对于有些类,尤其是有特定ID或者Key的类的对象调试非常有用。
评论区