|
|
|
Как правильно описать методы GetHashCode и Equals
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня. Подскажите, пишу некую библиотеку классов. Есть базовый класс, скажем TOBJECT { guid, function GetHashCode(), function Equals(obj TOBJECT) } Описание конструктора и других методов не стал приводить. Так вот, HashCode я получаю на основании guid. Guid формируется в конструкторе. Так же есть кэш этих объектов. Задача состоит в том, чтобы в конструкторе посмотреть, существует ли данный объект в кэше и соответственно вернуть именно этот объект из кэша. Например, есть класс TUSER { name } В кэше содержится объект TUSER(Иван). И я пытаюсь создать такой же объект с тем же параметром TUSER(Иван). На каком основании проводить сравнение? По идее если объект1.Equals(объект2)==true, то и объект1.GetHasCode()==объект2.GetHasCode(), но в моем случае я у базового класса для определения HASHCODE использую тот самый Guid, т.е. объект1.GetHasCode()!=объект2.GetHasCode(). Я понимаю, что HashCode необходимо формировать на основании атрибутов класса, но если эти атрибуты пусты, то и Hashcode для двух пустых объектов будут равны. Разве это справедливо в данном случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2010, 16:46:22 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=97&tid=1343450]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
438ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 773ms |

| 0 / 0 |
