2

我在我们的项目中注意到了这段代码

Dictionary<int, IList> someDict = new Dictionary<int, IList>();

使用接口获取价值的想法是什么?这是否意味着我可以放入每个实现/支持 IList 的列表?例如,我可以将 LList<int>List<string>for 值放在字典中吗?

4

4 回答 4

4

它允许您拥有更通用的类型,因此如果您稍后更改类型,重构将变得更容易。

列表<T> 或 IList<T>

减少重构工作的最佳方法是尽可能使用 IEnumerable。

于 2012-11-29T09:02:20.927 回答
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();
于 2012-11-29T09:04:48.823 回答
1

是的,你想从一个特殊的类中分离出来,你只是想确保字典中使用的类型提供了 IList 功能。只要您的类型提供此功能,您就可以使用它,包括List<T>. 它就像一个确保类型的一组方法/属性的合同

于 2012-11-29T09:02:25.517 回答
1

是的,您可以使用从声明的类型继承的类型。在您的情况下List<int>,是从 构建的泛型类型List<T>,而后者又继承自IList. 因此,是的,您可以List<int>在字典中使用。

于 2012-11-29T09:03:19.917 回答