你可以共同编写通用列表的交换例程吗?这是一个不起作用的交换例程:
public static void Swap(List<IComparable> list, int pos1, int pos2)
{
IComparable temp = list[pos1];
list[pos1] = list[pos2];
list[pos2] = temp;
}
调用Swap(new List<int>{1,2}, 0, 1)
在这里不起作用,因为此版本的Swap不是协变的。
答案 0 :(得分:1)
这对你有用吗?
public static void Swap<T>(this List<T> list, int pos1, int pos2)
{
T tmp = list[pos1];
list[pos1] = list[pos2];
list[pos2] = tmp;
}
这允许您指定类型并使交换成为可能。