MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Почему компилятор не может автоматически реализовать сравнение объектов?"
Answer 906827
Может, но не хочет. Для структур это уже и так реализовано, сравнение по умолчанию осуществляется путем сравнения значений всех полей. Однако классы считаются чуть более сложными, чем структуры, и сравнение их таким образом не всегда имеет смысл:
Класс может содержать ссылку на объект того же класса (узел дерева, например). Как это будет работать? Хотели сравнить узлы, получаем вместо этого сравнение целых веток дерева?
Класс может содержать поля, характеризующие его текущее состояние, но незначительные для его логической идентификации. Например, при сравнении двух автомобилей нет смысла сравнивать уровень бензина, температуру в салоне и т.п. Достаточно сравнить номер.
Поэтому предполагается, что типы, для которых равенство определяется равенством всех полей, должны быть структурами, а классы должны переопределять Equals, реализуя нормальное сравнение по правилам предметной области.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.