Подтвердить что ты не робот

Как reset словарь

Если я объявил такой словарь следующим образом:

private static Dictionary<string, object> aDict = new Dictionary<string, object>();

И теперь я хочу использовать его в другом месте. Как это сделать reset?

aDict = new Dictionary<string, object>(); // like this?

aDict = null; // or like this?

или другие стили reset?

4b9b3361

Ответ 1

Вы можете просто использовать метод Clear, он удалит все ключи и значения, после чего вы сможете повторно использовать его, не создавая новые экземпляры:

aDict.Clear();

Ответ 2

Попробуйте это

aDict.Clear();

Ответ 3

aDict.Clear(); будет работать.

Ответ 4

aDict.Clear(); - единственный способ, так как вы не хотите менять ссылку и сохраняете тот же объект в другом месте

Ответ 5

Выполнение декомпилирования метода Clear в Resharper на объекте Dictionary показывает следующее:

/// <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;
}

Словарь содержит целочисленный массив ведер и других управляющих переменных, которые либо установлены на -1, либо 0, чтобы эффективно очищать ключи и значения от объекта словаря. Это довольно много переменных, представляющих действительное состояние словаря, как мы можем видеть в исходном коде.NET. Интересно.

Ответ 6

Хорошо бы позвонить Count перед вызовом Clear, если словарь может быть пустым

if (aDict.Count > 0)
{
    aDict.Clear();
}

Подсчет предположительно быстрее чем Очистить, поэтому вы избегаете запуска Очистить словарь с нулевыми элементами.