我想编写一个在类似队列的界面上运行的对象.我去寻找IQueue<T>,但空手而归.
有以下与集合相关的接口:
ICollection<T>IList<T>IDictionary<TKey,TValue>ISet<T>是什么让这些类型的集合得到明确定义的接口?为什么堆栈和队列不保证接口?
And*_*rey 13
好吧,因为从这些接口到实现它们的类会有一对一的映射(除了最新的ConcurrentQueue).但是其他提到的接口有很多实现它们的类.
扩大一点.我们无法知道BCL团队的真正动机.但我有一种感觉,当他们创建Queue并且Stack这些类看起来如此微不足道时,他们决定不将它们抽象出接口.原因很明显:类看起来很简单但同时完成,因此没有理由在BCL中创建它们的不同实现.然后来了ConcurrentQueue,之前的声明变得有些不正确.
正如它指出的那样Queue并ConcurrentQueue没有那么多类似的使它们实现单一接口.
我认为 .NET 4 中新类的存在ConcurrentQueue<T>证明ConcurrentStack<T>了您的观点:应该有IQueue<T>接口IStack<T>。即使它们最初不存在,它们也应该被添加到 .NET 4 中。
过去,我不得不在 .NET 中创建自己的自定义 Stack 实现,并同意拥有一个标准接口会很有好处。
| 归档时间: |
|
| 查看次数: |
4483 次 |
| 最近记录: |