При сравнении ссылочных типов в C# по умолчанию сравниваются ссылки на объекты в памяти, а не содержимое самих объектов.
Это означает, что object1 == object2 будет истинно только в том случае, если object1 и object2 указывают на один и тот же экземпляр в куче.
Для сравнения содержимого объектов ссылочных типов используются:
Object.Equals().IEquatable<T>.Object.Equals().Object.ReferenceEquals().csharp