IDictionary<TKey, TValue>
繼承自IEnumerable<KeyValuePair<TKey, TValue>>
,但IDictionary
由於某種原因不會從IEnumerable<DictionaryEntry>
繼承。我想知道爲什麼?每當我需要對IDictionary
進行查詢時,我都不想寫這個醜陋的.OfType<DictionaryEntry>()
。爲什麼IDictionary(非泛型)從IEnumerable <DictionaryEntry>繼承?
6
A
回答
3
做出這種改變會破壞接口的每一個現有實現(因爲它們會突然缺少接口說他們必須擁有的一些方法)。
此外,IDictionary只存在於泛型之前的舊版兼容性中。除非絕對必要,否則不應該在新代碼中使用它。如果實際上使用對象類型,則可以使用IDictionary <對象,而使用對象>。
4
因爲IDictionary
是一個較舊的(預泛型)接口。改變它會破壞現有的代碼。這是一個遺產。
所以潛在的問題是你爲什麼(仍然)使用基於IDictionary的類,並且你不能升級?
相關問題
- 1. 非泛型IEnumerable和泛型IEnumerable <T>有什麼區別?
- 2. 爲什麼IEnumerable <T>從IEnumerable繼承?
- 3. Java泛型,爲什麼在泛型中使用繼承是非法的?
- 4. 爲什麼IList的<T>繼承了IEnumerable <T>和IEnumerable再次
- 5. 用IDictionary和IEnumerable嵌套泛型
- 6. 通用接口繼承非泛型C#
- 7. Delphi的泛型TObjectList <T>繼承
- 8. JAVA:泛型類繼承和泛型類型繼承
- 9. 繼承和泛型
- 10. 繼承和泛型
- 11. 泛型和繼承
- 12. 繼承泛型類
- 13. Java泛型繼承
- 14. Kotlin泛型繼承
- 15. 繼承與泛型
- 16. 泛型類型和繼承
- 17. 繼承和泛型類型
- 18. 泛型類型的繼承
- 19. C#泛型類型繼承
- 20. 爲什麼泛型沒有看到我的繼承?
- 21. 爲什麼泛型方法不能用於繼承和接口?
- 22. 繼承中的循環泛型 - 爲什麼它能夠工作?
- 23. 爲什麼XmlSerializer需要從IEnumerable繼承的類型來實現Add(System.Object)?
- 24. 繼承 - 爲什麼這是非法的?
- 25. 如何實現泛型IEnumerable或IDictionary來避免CA1006?
- 26. IEnumerable的<T>到的IDictionary <U,IEnumerable的<T>>
- 27. 從泛型類繼承初始化器
- 28. 從Java繼承泛型的問題
- 29. Java - 從接受泛型的類繼承?
- 30. 泛型中的繼承