你能为通用列表协变地编写交换例程吗?这是一个不起作用的交换例程:
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 不是协变的。
最佳答案
这对你有用吗?
public static void Swap<T>(this List<T> list, int pos1, int pos2)
{
T tmp = list[pos1];
list[pos1] = list[pos2];
list[pos2] = tmp;
}
这允许您指定类型并使交换成为可能。
关于c# - 协变地交换列表中的两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008935/