加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 痛苦的泛型,运算符’> =’不能应用于’T’和’T’类型

发布时间:2020-12-15 18:28:52 所属栏目:百科 来源:网络整理
导读:这是我的代码: class BinaryTreeT { private nodeT Head; public class nodeT { public T Data; public nodeT right; public nodeT left; public nodeT parent; ... } ... private void insert(ref T data,nodeT parent,ref nodeT currentChild) { ... { if
这是我的代码:
class BinaryTree<T> 
{
    private node<T> Head;
    public class node<T> 
    {
     public T Data;
     public node<T> right;
     public node<T> left;
     public node<T> parent;
    ...
    }
    ...
    private void insert(ref T data,node<T> parent,ref node<T> currentChild) 
    {
    ...
        {
            if (currentChild.Data >= data) insert(ref data,currentChild,ref currentChild.right);
            else insert(ref data,ref currentChild.left);
        }
     }
}

在上面if(currentChild.Data> = data)我得到错误:

Operator ‘>=’ cannot be applied to operands of type ‘T’ and ‘T’

我该怎么做才能解决这个错误?

解决方法

这个问题的经典解决方案是(1)使T IComparable<T>,或(2)使用 IComparer<T>或仿函数到您的班级.

(1)

class BinaryTree<T> where T : Comparable<T> ...

(2)

class BinaryTree<T> {
    private node<T> Head;
    private readonly IComparer<T> comparer;
    public BinaryTree(IComparer<T> comparer) {
        this.comparer = comparer;
    }
    //...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读