如何使用DebuggerDisplay属性表示位掩码

时间:2012-01-20 11:03:30

标签: c#

我有一个8级bool的类,我想在调试器中将这些bool表示为1或0,我该如何实现?

1 个答案:

答案 0 :(得分:2)

Yo可以创建一个简单的帮助方法:

private string GetBitMask(params bool[] values)
{
    var sb = new StringBuilder();
    foreach (var value in values)
    {
        sb.Append(value ? "1" : "0");
    }
    return sb.ToString();
}

然后像这样使用它:

[DebuggerDisplay("{GetBitMask(flag1, flag8)}")]
public class YouClass
{
    private bool flag1;
    // ...
    private bool flag8;
}

或者,如果您有一个bool s数组:

[DebuggerDisplay("{GetBitMask(flags)}")]
public class YouClass
{
    private bool[] flags;
    // ...
}

编辑:如果您不能/不想修改原始课程,请将GetBitMask()移至某个实用工具类,将其设为static并使用它从你想要的任何地方:

[DebuggerDisplay("{Utils.GetBitMask(flags)}")]