![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Plamenk |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 258 Регистрация: 18.2.2003 Репутация: 1 Всего: 3 |
Всем Привет!
Подскажите, если использовать в качестве ключа - объект класса (произвольный класс созданый мной, наследуется от MarshalByRef). Как это скажется на скорости работы Hashtable? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Да никак, все равно тейбл работает со ссылкой на объект а не самим объектом. Главное хорошуюхеш функцию для ключа использовать.
-------------------- |
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Для объектов, используемых в качестве ключей в Hashtable, должно быть реализовано два метода: GetHashCode и Equals класса Object. В том случае, если сравнение по ссылкам достаточно для используемых объектов, то метод Equals реализовывать необязательно. Метод GetHashCode должен обеспечивать уникальность и постоянство на все время использования объекта в качестве ключа в HashTable. Он используется для определения области, в котрой располагается объект, а при помощи Equals проводится поиск элемента внутри этой области. Тем самым уменьшается время поиска.
Относительно объектов класса MaschalByReference нужно сказать, что у него эти методы наследуются от Object. В свою очередь у класса Object не гарантируется уникальность и постоянство значения GetHashCode, потому не рекомендуется использование его объектов в качестве ключей. Что касается скорости, то использование объектов MaschalByReference на нее не влияет. Это сообщение отредактировал(а) Tomcat - 18.3.2005, 19:55 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |