Это зависит от того, за что вы выступаете.Так что нет никакого «общего» решения для этого.Если бы было, то System.Object
реализовал бы IEquatable<object>
, так как все уже наследуется от object
в любом случае.Таким образом, вы могли бы задать тот же вопрос о Object
вместо Foo
.
Короче говоря, это зависит от того, чего вы хотите достичь с помощью вашей иерархии классов.
Короче говоряЯ согласен, что в любом случае сложно определить, что делает объекты равными, потому что даже для одного и того же типа объекта могут быть разные требования.Когда вы используете кэш, равенство будет определяться идентификатором объекта.Когда вы используете Do- / Undo-List, вам понадобится другой классификатор, потому что идентификатор, вероятно, будет одинаковым для каждого объекта в списке.
Думаю, я немного отступил, но надеюсь, что смогу датьВы некоторые полезные моменты.; -)