Quote Originally Posted by NinjaNic View Post
@jmc: Ok so that's more of a breakdown of the one-line..I'm guessing the -1, 1, and 0 is supposed to be moving the object up, down, or keep it where it is in the list?
Sorting a list of items involves repeatedly comparing pairs of items and rearranging them if appropriate. To that end, the Sort method requires a method that can be called repeatedly for pairs of items in the list and will provide an indication of whether the items need to be rearranged. If that method returns zero then it indicates that the items are considered equivalent for the purposes of ordering. A value less than zero indicates that the first item is considered the lesser and a value greater than zero indicates that the second value is the lesser. While any non-zero values will, it is convention to use -1 and 1 unless there is a more intuitive option.

If you call Sort with no parameters then it relies on the IComparable.CompareTo implementation of the items themselves. If you pass an object that implements IComparer then it relies on the Compare method of that object. If you pass a Comparison(Of T) delegate then the method it refers to must provide the same behaviour.