Si j'ai déclaré un dictionnaire comme celui-ci:
private static Dictionary<string, object> aDict = new Dictionary<string, object>();
Et maintenant, je veux l'utiliser à un autre endroit. Comment puis-je le réinitialiser?
aDict = new Dictionary<string, object>(); // like this?
aDict = null; // or like this?
ou d'autres styles de réinitialisation?
Vous pouvez simplement utiliser la méthode Clear , elle supprimera toutes les clés et toutes les valeurs, puis vous pourrez la réutiliser sans avoir à créer de nouvelles instances:
aDict.Clear();
Essaye ça
aDict.Clear();
aDict.Clear();
est la seule façon de faire puisque vous ne voulez pas changer la référence et garder le même objet disponible à un autre endroit
aDict.Clear();
fonctionnera.
L'exécution d'une décompile de la méthode Clear dans Resharper sur un objet Dictionary montre ceci:
/// <summary>Removes all keys and values from the <see cref="T:System.Collections.Generic.Dictionary`2" />.</summary>
[__DynamicallyInvokable]
public void Clear()
{
if (this.count <= 0)
return;
for (int index = 0; index < this.buckets.Length; ++index)
this.buckets[index] = -1;
Array.Clear((Array) this.entries, 0, this.count);
this.freeList = -1;
this.count = 0;
this.freeCount = 0;
++this.version;
}
Le dictionnaire contient un tableau entier de compartiments et d’autres variables de contrôle définies sur -1 ou sur 0 afin d’effacer efficacement les clés et les valeurs de l’objet dictionnaire. Ce sont assez de variables représentant un état valide du dictionnaire comme on peut le voir dans le code source .NET. Intéressant.