C# 泛型类,如何实现IComparable

C# 泛型类,如何实现IComparable,c#,generics,C#,Generics,任务:创建一个方法,该方法将可比较的任何类型的列表和给定类型的元素作为参数接收。该方法应返回大于给定元素值的元素计数。修改Box类以支持按存储数据的值进行比较。 在第一行,您将收到n—要添加到列表中的元素数。在接下来的n行中,您将收到实际的元素。在最后一行,您将获得需要比较列表中每个元素的元素的值 输入: 3. aa aaa bb (givenElement是“aa”) 输出: 二, 这是我的代码,我不知道如何比较它们 public class Box<T> : IComparabl

任务:创建一个方法,该方法将可比较的任何类型的列表和给定类型的元素作为参数接收。该方法应返回大于给定元素值的元素计数。修改Box类以支持按存储数据的值进行比较。 在第一行,您将收到n—要添加到列表中的元素数。在接下来的n行中,您将收到实际的元素。在最后一行,您将获得需要比较列表中每个元素的元素的值

输入: 3. aa aaa bb

(givenElement是“aa”)

输出: 二,

这是我的代码,我不知道如何比较它们

public class Box<T> : IComparable<Box<T>>
{
    private T value;

    public Box(T value)
    {
        this.value = value;
    }

    public T Value
    {
        get
        {
            return this.value;
        }
        set
        {
            this.value = value;
        }
    }

    public int CompareTo(Box<T> other)
    {
        // ???
    }

    public override string ToString()
    {
        return string.Format($"{value.GetType().FullName}: {value}");
    }
}

    static void Main()
    {
        int n = int.Parse(Console.ReadLine());

        List<Box<string>> boxList = new List<Box<string>>();

        for (int i = 0; i < n; i++)
        {
            string input = Console.ReadLine();
            var box = new Box<string>(input);

            boxList.Add(box);              
        }

        string inp = Console.ReadLine();

        var elementComparer = new Box<string>(inp);


       GenericCountMethod(boxList, elementComparer);

    }
    public static int GenericCountMethod<T>(List<T> boxList, T str)
        where T : IComparable<T>
    {
        int count = 0;
        foreach (var item in boxList)
        {
            var x = item.CompareTo(str);
            // ??

        }
        return count;
    }
公共类框:i可比较
{
私人T值;
公用箱(T值)
{
这个值=值;
}
公共价值
{
得到
{
返回此.value;
}
设置
{
这个值=值;
}
}
公共整数比较(其他框)
{
// ???
}
公共重写字符串ToString()
{
返回string.Format($“{value.GetType().FullName}:{value}”);
}
}
静态void Main()
{
int n=int.Parse(Console.ReadLine());
List boxList=新列表();
对于(int i=0;i
您可以对类应用约束

public class Box<T> : IComparable<Box<T>> where T: IComparable<T>

非常感谢。这对我有帮助
public int CompareTo(Box<T> other)
{
    return value.CompareTo(other.Value);
}