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

呈现为:

在此处输入图像描述

为什么有区别?

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

4

4 回答 4

3

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

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

于 2011-03-08T22:17:26.887 回答
2

试试这个:

return ColorA.Name + " " + ColorB.Name;
于 2011-03-08T22:33:31.410 回答
0

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

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

于 2011-03-08T22:18:23.410 回答
0

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

于 2011-03-08T22:18:37.940 回答