【发布时间】:2018-05-09 09:30:52
【问题描述】:
public class A
{
[DebuggerDisplay("{DDBpp1()}")]
public byte[] Bpp = new byte[2];
public string DDBpp1()
{
return "DDBpp";
}
public string DDBpp2()
{
short result;
if (BitConverter.IsLittleEndian)
{
var bppCopy = new byte[2];
Bpp.CopyTo(bppCopy, 0);
Array.Reverse(bppCopy);
result = BitConverter.ToInt16(bppCopy, 0);
}
else
{
result = BitConverter.ToInt16(Bpp, 0);
}
return result.ToString();
}
}
在DebuggerDisplay 属性(DDBpp1 或 DDBpp2)中使用哪种方法并不重要。调试器下的值列始终由 {byte[2]} 填充。我期望 DDBpp1() 方法的字符串“DDBpp”或 DDBpp2() 方法的短值。
该问题出现在 VS15/17 社区下。
是否可以在调试器下更改显示字段值?
【问题讨论】:
-
正如答案中已经解释的那样,该属性应该归类。如果您需要它的成员,那么您的成员应该是一个类本身。事实上,如果数据太复杂而无法显示,那么您的班级可能自己做的工作太多。
标签: c# visual-studio-2015 visual-studio-2017 field debuggerdisplay