2014-01-08 42 views
2

您可以共同编写通用列表的交换例程吗?这里是一个交换程序将无法正常工作:共同交换列表中的两个元素

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)不会在这里工作。

+5

如果添加一些示例代码,即使是伪代码,理解你在说什么也会容易得多。 –

+0

墙上的文字和没有代码。我懒得看完所有的东西。 –

+3

@HighCore并非每一个编程问题都是关于代码的。习惯它。 – poke

回答

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; 

} 

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

+0

很好的答案,jsobo。我愚蠢的不认识它。下次出现时会做好准备!再次感谢! –