JKo*_*Kor 1 c# code-analysis visual-studio-2010
我正在PriorityQueue<T>上课,现在我正在List<T>用作后备商店.以下是我得到的错误:
有正确的后缀/没有不正确的后缀
不要暴露 List<T>
对于-Queue后缀我需要继承Queue<T>,但是为了排序Queue<T>,我需要清空队列,排序,然后重新填充队列.此外,如果我继承Queue<T>,我会违反LSP,因为优先级队列不是FIFO集合.
对于其中一种PriorityQueues,我正在使用a IComparer<T>来比较元素,但IComparer<T>只支持在数组和List<T>.
我确实看到了这个问题,但它与我的问题没有完全相关.
所以这是我的问题:我应该抑制这些代码分析警告吗?我应该继承Queue<T>并重写我的类来解决它,即使效率较低吗?如果没有,我还应该换掉List<T>其他东西吗?
编辑:我不知道这是否会有所不同,但以下是我的每个类的设置:
PriorityQueue<T> - 抽象基类(Sort()是抽象的)
PriorityQueue<T, TComparer> - 使用比较器进行排序的子类
ReflectionPriorityQueue<T> - 使用反射进行排序的子类,对此问题不重要的细节.这些错误与使用a无关List<T>- 它们与公共API有关.
有正确的后缀/没有不正确的后缀
这个是值得商榷的 - 就个人而言,我会禁用此警告PriorityQueue<T>,在我看来,应该使用该名称PriorityQueue<T>.
不要公开List
这只是意味着你不能公开地公开List<T>作为一个List<T>.如果您要封装列表,则永远不会出现.只要您将列表保密,此警告就会消失.
我应该继承Queue并重写我的类来解决它,即使效率较低吗?如果没有,我还应该换掉List吗?
我怀疑问题是你正在尝试子类化List<T>,这是一个坏主意.将其封装为私有成员,并实现相应的接口.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |