任务:创建一个方法,该方法接收可以比较的任何类型的列表和给定类型的元素作为参数。该方法应返回大于给定元素值的元素数。修改Box类以支持按存储数据的值进行比较。 在第一行,您将收到n - 要添加到列表中的元素数。在接下来的n行中,您将收到实际元素。在最后一行,您将获得需要比较列表中每个元素的元素的值。
INPUT: 3 AA AAA BB
(givenElement是“aa”)
输出: 2
这是我的代码,我不知道如何比较它们......
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;
}
答案 0 :(得分:1)
您可以将约束应用于类
public class Box<T> : IComparable<Box<T>> where T: IComparable<T>
然后使用CompareTo
的{{1}}实现:
value