|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
Структура состоит из двух текстовых полей, если одно из них null, то такой ключ не работает, можно набить в Dictionary сколько угодно ключей с одинаковым значением второго поля, и, соответственно, такой ключ не ищется. IEqualityComparer<T> использую, не помогает. Если оба поля не null, проблем нет. Можно ли заставить коллекцию понимать такие ключи с null'ами? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2021, 13:09 |
|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
Antonariy Если оба поля не null, проблем нет. Да и если какое-нибудь null (и даже оба null) проблем нет: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2021, 03:20 |
|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
А почему 314159? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 15:32 |
|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
Antonariy А почему 314159? оч. сложное вычисление хеша. На мой взгляд подошлобы такое: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 17:45 |
|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
от структуры в 2 текстовых поля толку, как с козла молока. строки, это ссылочный тип, а не тип значения. по сути у тебя структура это 2 адреса на 2 строки, которые не гарантируют того, что при = строках, адреса будет одинаковые. просто создай класс и переопредели в нем хеш функцию и оператор сравнения если речь про core.net, то советую использовать https://docs.microsoft.com/ru-ru/dotnet/api/system.hashcode.combine?view=net-5.0 и не городить квадратные колёса на велосипед ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 23:17 |
|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
и еще, в качестве типа которые сравниваются, очень удобно использовать анонимные типы и tuple , сравнение в них уже переопределено и будет работать как надо ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 23:19 |
|
ConcurrentDictionary co struct в качестве ключа.
|
|||
---|---|---|---|
#18+
Antonariy, https://github.com/microsoft/referencesource/blob/master/mscorlib/system/valuetype.cs /*=================================GetHashCode================================== **Action: Our algorithm for returning the hashcode is a little bit complex. We look ** for the first non-static field and get it's hashcode. If the type has no ** non-static fields, we return the hashcode of the type. We can't take the ** hashcode of a static member because if that member is of the same type as ** the original type, we'll end up in an infinite loop. **Returns: The hashcode for the type. **Arguments: None. **Exceptions: None. ==============================================================================*/ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2021, 12:23 |
|
|
start [/forum/topic.php?fid=20&msg=40085863&tid=1398255]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 420ms |
0 / 0 |