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