我有一个TestClass<T>将演变为基于堆的优先级队列。堆是List<T>类型。我正在重新排序代码,因此需要比较的元素List<T>。你可以猜到我收到了 error CS0019: Operator < cannot be applied to operands of type T and T。我知道这并不奇怪,并且C#泛型不是C ++模板。所以,我试图约束Type T带IComparable。但这并没有帮助。我发现的建议(为了解决此问题)主要是创建一个虚拟类,该类定义了此类运算符,并限制了T此类。但是,我发现此解决方案不是很方便。那么,还有其他方法可以解决此问题吗?这是相关的代码:using System;using System.Collections.Generic;public class TestClass<T> where T : IComparable{ private List<T> heap; public TestClass(int maxSize) { this.heap = new List<T>(maxSize + 1); } private void ReorderUpwards(int nodeIndex) { while (nodeIndex > 1 && this.heap[nodeIndex / 2] < this.heap[nodeIndex]) { nodeIndex /= 2; } }}
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消