Почему это оценивается как false
?
Color.FromArgb(255, 255, 255, 255) == Color.White
Update Это сделано намеренно.
Вот копия декомпилированной функции Equals
в структуре Color
:
public override bool Equals(object obj)
{
//probably failure to convert from C++ source,
//the following line should be invalid in C#, nevermind
if (obj is Color)
{
Color color = (Color) obj;
if (((this.value == color.value) &&
(this.state == color.state)) &&
(this.knownColor == color.knownColor))
{
return ((this.name == color.name) ||
(((this.name != null) && (color.name != null)) &&
this.name.Equals(this.name)));
}
}
return false;
}
Мой вопрос: с какой стати MSFT заставляет меня сравнивать белый цвет безобразным образом?!? !?
static bool AreEqual(Color a, Color b)
{
if (!a.Equals(b))
{
return
a.A == b.A &&
a.R == b.R &&
a.G == b.G &&
a.B == b.B;
}
return true;
}
Еще я не понимаю, почему перегрузка с 1 аргументом функции FromArgb
в Color
принимает int
, она должна иметь возможность использовать uint
( 0xffffffff
)