A igualdade de objetos se comporta de maneira diferente no .NET
Eu tenho essas declarações e seus resultados estão próximos a eles.
string a = "abc";
string b = "abc";
Console.Writeline(a == b); //true
object x = a;
object y = b;
Console.Writeline(x == y); // true
string c = new string(new char[] {'a','b','c'});
string d = new string(new char[] {'a','b','c'});
Console.Writeline(c == d); // true
object k = c;
object m = d;
Console.Writeline(k.Equals(m)) //true
Console.Writeline(k == m); // false
Por que a última igualdade me dá falso?
A questão é por que (x == y) é verdadeiro (k == m) é falso