Поскольку во всех случаях трудно сделать правильные вещи.
Как правило, в ОО-языках равенство имеет смысл только между экземплярами одного и того же класса.Когда вы используете анонимные классы, как в вопросе, у вас фактически есть два разных класса, которые выглядят одинаково.
Рассмотрим (в псевдокоде):
class Point {
int x;
int y;
}
class Dimensions {
int x;
int y;
}
class Rectangle {
Point lowerLeftCorner;
Dimensions dimensions;
}
ЗдесьТочка никогда не должна сравниваться равной Измерениям, даже если они имеют одинаковые значения x и y.Но две точки с одинаковыми значениями x и y должны сравниваться равными.
В вашем примере, как магически узнать язык, если вы предполагаете, что два разных анонимных класса имеют одинаковое значение или нет?Концептуально это могут быть две точки, или точка и измерения.
(Я не согласен с тем, что система C # лучше: во-первых, она не знает, что ваши анонимные классы должны были быть сравнимыми, а во-вторых, яна самом деле не понимаю, почему порядок должен влиять на вещи. Во всех других случаях порядок полей класса не имеет значения, почему он должен иметь значение здесь?)