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 :

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;
}
Car j'utilise une struct en Key, mais dans certain cas je voudrais pouvoir directement obtenir une Value en utilisant directement un hashcode.

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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
private Dictionary<TKey, TValue>.Entry[] entries;
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.

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.