Bonjour,
Il se trouve que ça optimiserai pas mal mon code si je pouvais créer mon propre indexeur et la fonction FindEntry, pour avoir quelque chose comme :
Car j'utilise une struct en Key, mais dans certain cas je voudrais pouvoir directement obtenir une Value en utilisant directement un hashcode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 object IDictionary.this [int key] { get { int num = this.FindEntry (key); if (num >= 0) { return this.entries [num].value; } return null; } set { Dictionary<TKey, TValue>.VerifyValueType (value); this [key] = (TValue)((object)value); } } private int FindEntry (int key) { if (this.buckets != null) { int num = key & 2147483647; for (int i = this.buckets [num % this.buckets.Length]; i >= 0; i = this.entries [i].next) { if (this.entries [i].hashCode == num && this.comparer.Equals (this.entries [i].key, key)) { return i; } } } return -1; }
La solution de réécrire entièrement une autre classe "CustomDictionary" en copiant l'intégralité de ce que je trouve dans la dll me parait un peu délicate et longue, mais je ne vois pas comment faire d'autre, car j'ai en autre besoin d'accéder à la variable "entries" qui est privée.
Sachant que mes premiers essai me balance pas mal d'erreurs qui on l'air de venir du fait que ma classe ne se trouve pas dans la dll System.
Code : Sélectionner tout - Visualiser dans une fenêtre à part private Dictionary<TKey, TValue>.Entry[] entries;
J'ai peu être raté quelque chose ? Quelqu'un vois une meilleure solutions que de réécrire ma propre classe entièrement ?
Merci d'avance.
Partager