2 // System.Collections.Comparer.cs
5 // Sergey Chaban (serge@wildwestsoftware.com)
8 using System.Globalization;
10 namespace System.Collections
13 public sealed class Comparer : IComparer
15 public static readonly Comparer Default = new Comparer ();
21 static readonly Comparer DefaultInvariant = new Comparer (CultureInfo.InvariantCulture);
27 //LAMESPEC: This seems to be encoded at runtime while CaseInsensitiveComparer does at creation
35 Comparer (CultureInfo culture)
38 throw new ArgumentNullException ("culture");
45 public int Compare (object a, object b)
54 if (_culture != null) {
55 string sa = a as string;
56 string sb = b as string;
57 if (sa != null && sb != null)
58 return _culture.CompareInfo.Compare (sa, sb);
62 return (a as IComparable).CompareTo (b);
63 else if (b is IComparable)
64 return -(b as IComparable).CompareTo (a);
66 throw new ArgumentException (Locale.GetText ("Neither a nor b Comparable."));