为了账号安全,请及时绑定邮箱和手机立即绑定

比较通用列表的元素

比较通用列表的元素

C#
慕桂英3389331 2021-04-13 17:14:58
我有一个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 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

使用IComparable和代替使用><使用CompareTo方法

value.CompareTo(value2) <= 0


查看完整回答
反对 回复 2021-04-24
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信