我有一個自定義集合類,實現了IDictionary<TKey, TValue>
,實際上使用System.Collections.Generic.Dictionary<TKey, TValue>
作爲我的自定義集合的基礎存儲。我想隱式強制轉換爲Dictionary並將其明確強制轉換爲我的自定義類。在用戶定義的演員陣列中包裝或複製
我不完全確定的是當鑄造到Dictionary<TKey, TValue>
我應該返回底層集合還是將底層字典複製到一個新對象並返回該值?同樣在相反的方向,從Dictionary<TKey, TValue>
,我應該包裝鑄造字典或複製值到一個新的字典?
我的實現不是不可變的,而只是增加了一些額外的功能。我個人看不出任何一種轉換方法會產生的問題。在這種特定情況下,對底層集合的修改不會導致包裝集合的狀態出現問題。因此,是否存在一種基於非性能的理由來使用另一種方法?
示例類:
public class MyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
...
public static implicit operator Dictionary<TKey, TValue>(MyDictionary<TKey, TValue> myDict)
{
return myDict.dictionary;
}
//OR
public static implicit operator Dictionary<TKey, TValue>(MyDictionary<TKey, TValue> myDict)
{
return new Dictionary(myDict);
}
...
}
PS:我不是在尋找 「最佳實踐」 或主觀的答案。如果答案是「否,在使用一種方法或另一種方法時沒有客觀的非性能支持差異」這是可以接受的答案。