Dictionary Count (Get Number of Keys)
This page was last reviewed on May 14, 2023.
Dot Net Perls
Count, Dictionary. A Dictionary contains a certain number of keys and values. This number is returned by the Count property. No looping is usually needed.
Shows a dictionary
With Count we quickly determine how much data is stored in the Dictionary. The field is stored as elements are added, so it is fast to access.
An example. The Count property returns the number of keys. This count integer is not equal to the Dictionary fill rate or its internal bucket count.
Tip Count returns the exact number of key-value pairs you have added (and have not removed).
Here This program adds 4 keys to the Dictionary. Its count at this point is equal to 4.
Next One key is removed. The Dictionary is cleared, which puts its count at zero. The Count property is readonly.
Shows a dictionary
using System; using System.Collections.Generic; // Create new Dictionary with 4 keys. Dictionary<string, int> dictionary = new Dictionary<string, int>(); dictionary.Add("carrot", 1); dictionary.Add("pear", 4); dictionary.Add("apple", 6); dictionary.Add("kiwi", 3); // Count the keys. int count1 = dictionary.Count; // Remove one key. dictionary.Remove("pear"); // Count the keys again. int count2 = dictionary.Count; // Clear the Dictionary contents. dictionary.Clear(); // Count the keys again. int count3 = dictionary.Count; // Write the counts of the Dictionary. Console.WriteLine(count1); Console.WriteLine(count2); Console.WriteLine(count3);
4 3 0
Implementation. Count is implemented as a property accessor—it is not a direct field access. Instead, the call to Count does a simple and fast calculation each time you call it.
Note The "freeCount" field is subtracted from the "count" field, resulting in one "sub" IL instruction.
public int Count { get { return (this.count - this.freeCount); } }
Limitations. The Count property gives you no insight into the internal implementation state of the Dictionary. For detailed performance analysis, a debugger can be used.
Info The Dictionary has many fields, such as a "buckets" field, along with freeList and freeCount fields.
Condition. The Count property cannot be used to filter or selectively count keys. For this purpose, we can use a foreach-loop over the Keys property, with an if-conditional.
Also The Count() extension, from the System.Linq namespace, typically has much worse performance.
A summary. We can get the number of keys and values in a Dictionary. Because the Dictionary enforces unique keys, you can use Count to compute the number of unique keys in a collection.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on May 14, 2023 (edit).
© 2007-2024 Sam Allen.