I read this [post about card shuffling](http://www.codinghorror.com/blog/archives/001015.html) and in many shuffling and sorting algorithms you need to swap two items in a list or array. But what does a good and efficient Swap method look like?

Let's say for a `T[]` and for a `List<T>`. How would you best implement a method that swaps two items in those two?

```
Swap(ref cards[i], ref cards[n]);   // How is Swap implemented?

```