为什么Color.FromArgb(255,255,255,255)不等于Color.White?有没有内置的方法来比较A,R,G,B值而不是颜色名称?
谢谢.
Nic*_*ick 17
请参阅http://msdn.microsoft.com/en-us/library/e03x8ct2(VS.85).aspx
此结构仅与其他Color结构进行比较.要仅根据其ARGB值比较颜色,您应该使用ToArgb方法.这是因为Equals和op_Equality成员使用的不仅仅是颜色的ARGB值来确定等效性.例如,Black和FromArgb(0,0,0)不被认为是相等的,因为Black是命名颜色而FromArgb(0,0,0)不是.
添加到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();
}
}
Run Code Online (Sandbox Code Playgroud)