List(T).Sort Method (Comparison(T))
Assembly: mscorlib (in mscorlib.dll)
If comparison is provided, the elements of the List(T) are sorted using the method represented by the delegate.
If comparison is a null reference (Nothing in Visual Basic), an ArgumentNullException is thrown.
This method uses Array.Sort, , which applies the introspective sort as follows:
If the partition size is fewer than 16 elements, it uses an insertion sort algorithm
If the number of partitions exceeds 2 * LogN, where N is the range of the input array, it uses a Heapsort algorithm.
Otherwise, it uses a Quicksort algorithm.
This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.
On average, this method is an O(n log n) operation, where n is Count; in the worst case it is an O(n ^ 2) operation.
The following code demonstrates the Sort and Sort method overloads on a simple business object. Calling the Sort method results in the use of the default comparer for the Part type, and the Sort method is implemented using an anonymous method.
The following example demonstrates the method overload.
The example defines an alternative comparison method for strings, named CompareDinosByLength. This method works as follows: First, the comparands are tested for a null reference (Nothing in Visual Basic), and a null reference is treated as less than a non-null. Second, the string lengths are compared, and the longer string is deemed to be greater. Third, if the lengths are equal, ordinary string comparison is used.
A List(T) of strings is created and populated with four strings, in no particular order. The list also includes an empty string and a null reference. The list is displayed, sorted using a Comparison(T) generic delegate representing the CompareDinosByLength method, and displayed again.
.NET FrameworkSupported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0
.NET Framework Client ProfileSupported in: 4, 3.5 SP1
XNA FrameworkSupported in: 3.0, 2.0, 1.0
Portable Class LibrarySupported in: Portable Class Library
Supported in: Windows Phone 8.1
Supported in: Windows Phone Silverlight 8.1
Supported in: Windows Phone Silverlight 8