说我有
List<int> ages = new List<int>() { 8, 5, 3, 9, 2, 1, 7 };
List<int> marks = new List<int>() { 12, 17, 08, 15, 19, 02, 11 };
我可以marks
这样排序ages
:
while (true)
{
bool swapped = false;
for (int i = 0; i < ages.Count - 1; i++)
if (ages[i] > ages[i + 1])
{
int tmp = ages[i];
ages[i] = ages[i + 1];
ages[i + 1] = tmp;
tmp = marks[i];
marks[i] = marks[i + 1];
marks[i + 1] = tmp;
swapped = true;
}
if (!swapped)
break;
}
现在我想把它放到一个接受任何两个列表的函数中。第一个参数将是参考列表,数字或可比较的列表。第二个参数将是包含数据的列表。
例如:
public static void Sort<T>(List<T> RefList, List<T> DataList)
{
// sorting logic here...
}
有几个问题:
首先,几乎可以肯定和T
中的类型不一样。RefList 可能是日期、整数或双精度数;而 DataList 可以自由地成为任何东西。我需要能够接收两种任意的泛型类型。RefList
DataList
其次,我似乎无法在这一行中使用>
运算符:T
if (ages[i] > ages[i + 1])
也许我的整个方法都是错误的。
顺便说一句,我已经阅读了对类似问题的回复,这些问题表明这两个列表应该组合成一个复合数据类型的列表。这对我的应用程序来说根本不实用。我要做的就是编写一个静态函数,它以某种方式根据另一个列表的元素对一个列表进行排序。