我想编写一个在类似队列的界面上运行的对象.我去寻找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 次 |
最近记录: |