I noticed this code in our project
Dictionary<int, IList> someDict = new Dictionary<int, IList>();
What’s the idead of using interface for value? Does that means that I can put in every list that implements/support IList ? For example, can I put L List<int>and List<string> for values in the dictionary ?
It allows you to have a more generic type, so it will become easier to refactor if you change the type later.
List<T> or IList<T>
The best way to reduce refactoring job is to use IEnumerable when possible.