<p>what is the value of using IDictionary here?</p>

The value of using an interface is always the same: you don't have to change client code when switching to another backend implementation.
Consider that profiling your code later shows that a hash table implementation (used in the
```
Dictionary
```
class) isn't suited for your task and that a binary search tree would perform better. If you've coded to an interface then switching the implementation is straightforward. If, however, you've used a concrete class, you've got to change a lot more code in a lot more places. => This costs time and money.