1 c# generics collections dictionary icollection
我有一个可以实现各种集合和数据类型的接口,它可以很好地处理某些集合,但字典给我带来了问题,我猜是因为字典有点不同并且有键值对?
public interface IStructure
{
void InsertRun<T> (T item);
ICollection RetrieveSortedListRun<T>();
T RetrieveItemRun<T>(T item);
}
class DictionaryRun : IStructure
{
IDictionary<int, object> dictionary;
public DictionaryRun()
{
dictionary = new Dictionary<int, object>();
}
public void InsertRun<T>(T item)
{
dictionary.Add(dictionary.Count + 1, item);
}
public ICollection RetrieveSortedListRun<T>()
{
return dictionary;
}
public T RetrieveItemRun<T>(T item)
{
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
IDictionary<TKey, TValue>不执行ICollection,就执行ICollection<KeyValuePair<TKey, TValue>>。
现在,如果您将字典更改为IDictionary您的代码将编译。
然而,在我看来,你的界面和对象的整体设计可以重新设计。
public interface IStructure<T>
{
void InsertRun(T item);
ICollection<T> RetrieveSortedListRun();
T RetrieveItemRun(T item);
}
class DictionaryRun<T> : IStructure<T>
{
IDictionary<int, T> dictionary;
public DictionaryRun()
{
dictionary = new Dictionary<int, T>();
}
public void InsertRun(T item)
{
dictionary.Add(dictionary.Count + 1, item);
}
public ICollection<T> RetrieveSortedListRun()
{
return dictionary.Values;
}
public T RetrieveItemRun(T item)
{
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3868 次 |
| 最近记录: |