为什么Color.FromArgb(255,255,255,255)的不等于Color.White?是否有任何内置方法只比较A,R,G,B值而不是颜色名称?
感谢。
答案 0 :(得分:17)
请参阅http://msdn.microsoft.com/en-us/library/e03x8ct2(VS.85).aspx
此结构仅进行比较 与其他颜色结构。至 比较颜色完全基于他们的 ARGB值,您应该使用ToArgb 方法。这是因为等于和 op_Equality成员确定 相当于使用的不仅仅是 ARGB值的颜色。例如, 黑色和FromArgb(0,0,0)不是 被认为是平等的,因为黑色是一个 命名颜色和FromArgb(0,0,0)是 不
答案 1 :(得分:5)
添加到Nick的(正确的)答案:如果你真的想要,你可以编写自己的IEqualityComparer<Color>
实现并使用它,例如,你可能正在写的任何算法有颜色,在色彩平等测定方面你需要灵活性。
你知道,比如:
public class ColorComparer : IEqualityComparer<Color>
{
public bool Equals(Color x, Color y)
{
return x.ToArgb() == y.ToArgb();
}
public int GetHashCode(Color color)
{
return color.ToArgb();
}
}