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;
}
}
这:
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.Name + " " + ColorB.Name;
答
第一种方法隐式调用的Color
实例ToString
,而第二个就是你返回一个字符串。
要编辑:我不确定,但我认为它是自动完成的。否则,查看ToKnownColor
方法,它会返回一个枚举值KnownColor
,您可以使用它来构建具有所需行为的颜色。但是,您应该意识到不会有任何可能的颜色的名称。
+0
对不起,我问了错误的问题,请看我的编辑。 – sventevit 2011-03-08 22:27:20
答
因为这是显示您的ToString()结果。
第一个调用Color.Red.ToString(),它给出'Color [Red]',然后Color.Black.ToString()。
答
在第一个实例中,正在调用Color类的ToString()方法(给出Color [ColorName]输出)。
尝试'返回ColorA.ToString()+ “” + ColorB.ToString();'的差异可能是由于一个事实,即它是在基本类型调用toString,即在其基础实现中使用“Color”。 – 2011-03-08 22:17:33