我在项目中注意到了这段代码
Dictionary<int, IList> someDict = new Dictionary<int, IList>();
使用接口获取价值的理念是什么?这是否意味着我可以放入实现/支持IList的每个列表?例如,我可以将L List<int>
和List<string>
放入字典中的值吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
您可以将IList
的任何实现作为值
Dictionary<int, IList> someDict = new Dictionary<int, IList>();
someDict[1] = new List<string>() { "Hello", "World" };
someDict[2] = new List<int>() { 42 };
someDict[3] = new int[] { 1, 2, 3 };
someDict[4] = new ArrayList();
答案 2 :(得分:1)
是的,您希望与特殊类分离,您只需确保字典中使用的类型提供IList功能。只要您的类型提供此类型,您就可以使用它,包括List<T>
。它就像一个合同,确保了类型
答案 3 :(得分:1)
是的,您可以使用从声明的类型继承的类型。在您的情况下,List<int>
是从List<T>
构建的泛型类型,后者继承自IList
。因此,是的,您可以在词典中使用List<int>
。