2017-06-08 112 views
1

我得從Java這樣的想法 - 有人告訴我,你應該申報的集合這樣我們是否應該聲明一個集合類或接口?

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

其中ArrayList是實現List接口的類。關鍵是通過推廣代碼來增強可維護性 - 因爲如果您將實施改爲例如LinkedList<Object>,您可以100%無痛苦地實現這一目標。

所以,這個投影在C#中,是它認爲一個很好的做法,做同樣的事情在C#:

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

編輯:我剛剛發現的LinkedList在C#中甚至沒有實現IList接口,所以我想它落戶的名單至少

+1

這取決於你需要什麼。我們無法爲你回答。 –

+0

基本上說,對接口進行開發幾乎總是一個好主意,但是沒有一般的規則可以做到這一點,它也取決於你想要達到什麼以及你的偏好是什麼。 – HimBromBeere

+0

問題應該是,你需要額外的可維護性嗎? – captivatedbyUBB

回答

1

有問題,通常這是使用接口的地方,你可以一個很好的做法。

有兩個重要的例外容器,但:

  • 時,必須使用基於散列的容器,不可比較的對象,請使用HashSet<T>Dictionary<TK,TV>
  • 在聲明局部變量使用var的隱式類型往往是首選爲方便起見,

請注意,如果你打算使用一個排序容器必須IOrderedSet<T>IOrderedDictionary<TK,TV>

相關問題