c# - 协变地交换列表中的两个元素

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

最佳答案

这对你有用吗?

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/

相关文章:

java - 如何停止覆盖数组列表?

list - Elixir:打印列表以及字符串

list - 我可以在 Groovy 和 Grails 中同时使用 IN 和 findBy 吗?

c - 希尔排序程序

c# - 如何添加对 AWS SQS 队列的权限?

c# - 状态很重要的对象的最佳设计模式 - 单例或静态

javascript - 检查数组是否可堆栈排序

c - 在 C 中对数组中的值进行排序

c# - Control.Invoke() 与其委托(delegate)调用之间的延迟是多长时间?

c# - 如何在可选扩展名之前将随机字符串附加到文件名?