【问题标题】:DebuggerDisplay - type in square bracketsDebuggerDisplay - 输入方括号
【发布时间】:2011-03-08 22:15:18
【问题描述】:
class A
{
    public Color ColorA { get; set; }
    public Color ColorB { get; set; }

    public A(Color colorA, Color colorB)
    {
        ColorA = colorA;
        ColorB = colorB;
    }

    public override string ToString()
    {
        return ColorA + " " + ColorB;
    }
}

这呈现为:


还有这个:

class A
{
    public Color ColorA { get; set; }
    public Color ColorB { get; set; }

    public A(Color colorA, Color colorB)
    {
        ColorA = colorA;
        ColorB = colorB;
    }

    public override string ToString()
    {
        return "Red" + " " + "Black";
    }
}

呈现为:

为什么不一样?

编辑:我知道为什么会有差异。我的问题是,如何在不硬编码颜色文本的情况下实现第二个结果。

【问题讨论】:

  • 尝试return ColorA.ToString() + " " + ColorB.ToString(); 不同可能是因为它在底层类型上调用ToString,即在它的基本实现中Color

标签: c# .net debuggerdisplay


【解决方案1】:

第一个方法在Color 实例上隐式调用ToString,而第二个方法只是你返回一个字符串。

您的编辑:我不确定,但我认为它是自动完成的。否则,请查看 ToKnownColor 方法,它返回一个 KnownColor 枚举,您可以使用它来构造具有所需行为的颜色。但是,您应该知道,并非每种颜色都有名称。

【讨论】:

    【解决方案2】:

    试试这个:

    return ColorA.Name + " " + ColorB.Name;
    

    【讨论】:

      【解决方案3】:

      因为那会显示您的 ToString() 结果。

      第一个调用 Color.Red.ToString(),它给出 'Color [Red]',然后是 Color.Black.ToString()。

      【讨论】:

        【解决方案4】:

        在第一个实例中,调用 Color 类的 ToString() 方法(给出 Color [ColorName] 输出)。

        【讨论】:

          猜你喜欢
          • 2011-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-13
          • 2016-09-06
          • 1970-01-01
          • 2015-07-01
          相关资源
          最近更新 更多