Если ссылочный тип не перегружает оператор равенства ==, тогда вместо него будет использоваться оператор равенства на основе Object. Почему это не верно для пользовательских structs:
struct A{ }
static void Main(string[] args)
{
A a = new A();
A a1 = new A();
bool equal= (a == a1); //error
}
А именно, не ValueType (из которого все вывод structs) также перегружает оператор ==?