我正在PriorityQueue<T>
上课,现在我正在List<T>
用作后备商店。以下是我得到的错误:
有正确的后缀/没有错误的后缀
不要暴露List<T>
对于 -Queue 后缀,我需要继承Queue<T>
,但要对 a 进行排序Queue<T>
,我需要清空队列,排序,然后重新填充队列。另外,如果我从 继承Queue<T>
,我会违反 LSP,因为优先级队列不是 FIFO 集合。
对于我正在制作的其中一种 PriorityQueues 是使用IComparer<T>
来比较元素,但IComparer<T>
仅在数组和List<T>
.
我确实看到了这个问题,但它与我的问题并不完全相关。
所以这是我的问题:我应该禁止这些代码分析警告吗?我是否应该继承Queue<T>
并重写我的类来解决它,即使它效率较低?如果没有,我还应该换List<T>
别的东西吗?
编辑:我不知道这是否会有所不同,但以下是我对每个课程的设置:
PriorityQueue<T>
-- 抽象基类(Sort() 是抽象的)PriorityQueue<T, TComparer>
-- 使用比较器进行排序的子类ReflectionPriorityQueue<T>
-- 使用反射进行排序的子类,细节对这个问题并不重要。