What are the compelling reasons to use a MemoryCache over a plain old Dictionary<string,object>

I have just come across the MemoryCache which is new in .NET 4.

I get that it can be useful if you want to:

  • Limit the total memory usage of the cache
  • Have an object expiry time (time to live) for objects you put in the cache

Are there any other compelling reasons to use a MemoryCache over a standard Dictionary<string,object>

I have a few books on C# and .NET and there is no reference to it anywhere.


I think you nailed the two compelling reasons :-)

The MemoryCache has an eviction strategy, so that it can throw out entries that are no longer needed or for that you do not have enough memory anymore.

A Dictionary will not "lose contents".

Update: MemoryCache is thread-safe and has methods such as AddOrGetExisting. With a Dictionary, you'd have to synchronize access yourself (or use ConcurrentDictionary).