web-dev-qa-db-fra.com

Comment réinitialiser un dictionnaire

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?

29
Nano HE

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();
82
CMS

Essaye ça

aDict.Clear();
14
Anuraj

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

11
manubaum

aDict.Clear(); fonctionnera.

11
Alan

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.

0
Tore Aurstad