【发布时间】:2016-09-13 19:25:11
【问题描述】:
我有一个自定义集合类,它实现了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:我不是在寻找“最佳实践”或主观答案。如果答案是“否,使用一种方法或另一种方法没有客观的非性能支持差异”,这是一个可接受的答案。
【问题讨论】:
标签: c# dictionary collections casting type-conversion