协同交换列表中的两个元素

时间:2014-01-08 23:40:34

标签: c# list sorting generics covariance

你可以共同编写通用列表的交换例程吗?这是一个不起作用的交换例程:

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不是协变的。

1 个答案:

答案 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;

}

这允许您指定类型并使交换成为可能。