Так как Color является структурой, он имеет много свойств, отличных от значений ARGB. Например, если вы создадите цвет, используя два разных подхода, у них будут разные имена; при этом они не будут равны.
Color a = Color.Red;
Color b = Color.FromArgb(a.A, a.R, a.G, a.B);
string name1 = a.Name; //name is Red
string name2 = b.Name; //name is ffff0000
Структуры сами по себе не имеют никакой логики равенства (т. Е. Если вы хотите использовать '=='). Таким образом, для каждой структуры этот оператор должен быть определен. Если вы исследуете Color, вы увидите следующее определение оператора '=='. Это зависит от того, как реализован этот оператор.
// Summary:
// Tests whether two specified System.Drawing.Color structures are equivalent.
//
// Parameters:
// left:
// The System.Drawing.Color that is to the left of the equality operator.
//
// right:
// The System.Drawing.Color that is to the right of the equality operator.
//
// Returns:
// true if the two System.Drawing.Color structures are equal; otherwise, false.
public static bool operator ==(Color left, Color right);
Также «равно» переопределяется в структуре так, что он проверяет эквивалентность структур;
// Summary:
// Tests whether the specified object is a System.Drawing.Color structure and
// is equivalent to this System.Drawing.Color structure.
//
// Parameters:
// obj:
// The object to test.
//
// Returns:
// true if obj is a System.Drawing.Color structure equivalent to this System.Drawing.Color
// structure; otherwise, false.
public override bool Equals(object obj);