Dictionary
Clear()
removes all existing Dictionary
keys (and their values). In most cases, testing a Dictionary
before using it is the best strategy.
We see whether you should test for an empty Dictionary
before clearing one. This helps us learn how best to handle Dictionaries.
This program shows how the Clear method works. After we call Clear, there are always zero elements in a Dictionary
. It erases the internals.
using System.Collections.Generic; using static System.Console; // Create a small dictionary. // ... Add 2 keys. var lookup = new Dictionary<string, int>(); lookup["cat"] = 10; lookup["dog"] = 20; // Write the count. WriteLine(lookup.Count); // Clear the dictionary and write its new count. lookup.Clear(); WriteLine(lookup.Count);2 0
A Dictionary
is complex. Some actions may be slower than you think. The Count
and Clear members both seem simple. But the Count
property is much faster than Clear.
Dictionary
. So it can avoid calling Clear.Count
before calling Clear.using System; using System.Collections.Generic; using System.Diagnostics; const int _max = 100000000; var dict = new Dictionary<string, string>(); var s1 = Stopwatch.StartNew(); // Version 1: use Clear. for (int i = 0; i < _max; i++) { dict.Clear(); } s1.Stop(); var s2 = Stopwatch.StartNew(); // Version 2: use Clear if needed. for (int i = 0; i < _max; i++) { if (dict.Count > 0) { dict.Clear(); } } s2.Stop(); Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));1.88 ns Always call Clear 1.04 ns Call Clear if Count > 0
Often we need to erase all the elements in a C# Dictionary
. This allows us to reuse an existing Dictionary
. The Clear()
method helps here.