我们应该声明一个集合类还是接口?

时间:2017-06-08 10:23:04

标签: c# collections interface

我从Java那里得到了这个想法 - 我被告知你应该声明一个这样的集合

List<Object> myList = new ArrayList<Object>();

其中ArrayList是实现List接口的类。这一点的目的是通过推广代码来增强可维护性 - 因为,如果您将实现更改为,例如LinkedList<Object>,您可以毫不费力地实现它。

因此,在C#上进行预测,在C#中做同样的事情被认为是一种好习惯:

IList<Object> list = new List<Object>()

编辑:我刚刚发现C#中的LinkedList甚至没有实现IList接口,所以我想它至少解决了列表的问题

1 个答案:

答案 0 :(得分:1)

是的,通常情况下,尽可能使用接口是一种很好的做法。

但容器有两个重要的例外:

  • 如果必须对不可比较的对象使用基于哈希的容器,请使用"require": { "behat/behat": "v3.3.1", "behat/mink": "v1.7.1", "behat/mink-extension": "v2.2", "behat/mink-selenium2-driver": "dev-master", HashSet<T>
  • 当您声明局部变量时,为方便起见,通常首选使用Dictionary<TK,TV>进行隐式输入,

请注意,如果您打算使用已排序的容器,则可以使用varIOrderedSet<T>