Существует целый набор рекомендаций по MSDN . Вы должны хорошо их прочесть, это сложно и важно.
Несколько моментов, которые я нашел наиболее полезными:
struct Point
вы, как правило, выполняете член с помощью сравнения элементов. class Point2
, где объект не имеет полезной идентификации, а затем вы переопределяете членов Equality для предоставления вашей собственной семантики. В этой ситуации следуйте рекомендациям, чтобы сначала пройти нулевые и другие типы. GethashCode()
и operator==
.