任何人都可以告訴我DictionaryBase
和通用Dictionary<TKey, TValue>
之間的區別,但DictionaryBase
是一個抽象類!它們都是強類型的,我在某處讀到泛型類在性能上優於非泛型類,應該是首選,那麼DictionaryBase
的確切用法是什麼呢? 這兩個類都差不多!DictionaryBase和Dictionary之間的差異<Tkey,Tvalue>
任何形式的幫助,將不勝感激
感謝
任何人都可以告訴我DictionaryBase
和通用Dictionary<TKey, TValue>
之間的區別,但DictionaryBase
是一個抽象類!它們都是強類型的,我在某處讀到泛型類在性能上優於非泛型類,應該是首選,那麼DictionaryBase
的確切用法是什麼呢? 這兩個類都差不多!DictionaryBase和Dictionary之間的差異<Tkey,Tvalue>
任何形式的幫助,將不勝感激
感謝
Dictionarybase是實現非通用IDictionary接口的基類,而Dictionary是實現通用IDictionary接口的字典的通用版本。泛型的使用優於非泛型。
我認爲這將是更有幫助When to use generics?
使用泛型集合一般建議,因爲你獲得 類型安全的直接的好處,而不必從 基地集合類型派生並實現類型特定成員。當集合元素 是值類型時,通用 集合類型的性能通常也會高於相應的非通用集合類型(並且優於從非泛型基本集合類型導出 的類型),因爲對於泛型,不需要將 元素。
泛型類和方法在某種程度上結合的可重用性,類型安全和 效率,他們的非通用同行不能。 泛型最常用於集合以及對它們進行操作的方法 。 .NET Framework類庫 的2.0版提供了一個新的名稱空間System.Collections.Generic,其中包含幾個新的基於通用類的集合類。建議 是針對.NET Framework 2.0和更高版本的所有應用程序使用,而不是舊的非通用 同行
究其原因,非泛型集合類型仍然是在.NET框架主要是爲了向下兼容。通常你應該儘可能使用泛型集合類型。
因此,由於存在通用字典,因此沒有實際使用DictionaryBase! – Batrickparry 2011-01-06 11:12:58
實際上,是的。 – 2011-01-06 11:16:52
感謝亞當.. :) – Batrickparry 2011-01-06 11:24:37
我只是完成轉換舊DictionaryBase
類是IXmlSerializable
到 新的泛型集合類通用Dictionary(string, string)
。
最痛苦的區別是,對於通用Dictionary<string, string>
,當我呼叫this[key]
找到一個不存在的密鑰時,我得到一個異常,說明該密鑰不存在。
在DictionaryBase
我找回null
毫無例外。這對我來說很痛苦,因爲系統中充滿了代碼,在嘗試獲取密鑰值之前沒有檢查字典ContainsKey
。假設我在序列化過程中搞砸了某些東西,我感到更加痛苦。
這兩個類都強類型..也從接口派生。除了DictionaryBase的System.Collections中的所有類,我猜不是類型特定的!所以,區別僅在於它們來自不同的接口並且DictionaryBase是一個抽象類。 – Batrickparry 2011-01-06 11:20:25
不應該將非泛型類中的泛型類的對應物設置爲Obsolete then !!!!! – Batrickparry 2011-01-06 11:26:42
泛型IDictionary是非泛型IDictionary的泛型版本。泛型提升了類型的安全性和效率。 – 2011-01-06 11:51:21