DebuggerDisplay - 键入方括号

时间:2011-03-08 22:15:19

标签: c# .net debuggerdisplay

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;
    }
}

这呈现为:

enter image description here


而且:

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";
    }
}

呈现为:

enter image description here

为什么会有差异?

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

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

试试这个:

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

答案 2 :(得分:0)

因为那显示了你的ToString()结果。

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

答案 3 :(得分:0)

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

相关问题