Это зависит от того, что вы подразумеваете под «уникальным идентификатором». Если вы можете гарантировать, что в памяти не будет никаких других объектов с таким же идентификатором, вы можете просто наследовать функциональность от Object
. Однако, если вы хотите рассматривать два объекта одинакового типа и идентификатора как равные, то это выглядит хорошо. Вы также хотите переопределить GetHashCode
.
Вы действительно должны рассмотреть, что собирается использовать реализацию равенства и что они ожидают. Если могут быть два разных объекта с одинаковым идентификатором, но с разными другими свойствами, что означает, что они равны? Это уместно или нет?
Это может имеет больше смысла для реализации IEqualityComparer(Of T)
в чем-то вроде, например, типа "IdEqualityComparer
". Это хороший способ выразить, что отношение равенства полезно , но не обязательно является «естественным, всеобъемлющим» отношением равенства.