CaseInsensitiveComparer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / CaseInsensitiveComparer.cs / 1305376 / CaseInsensitiveComparer.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Class: CaseInsensitiveComparer 
**
** [....] 
**
**
**
============================================================*/ 
namespace System.Collections {
//This class does not contain members and does not need to be serializable 
    using System; 
    using System.Collections;
    using System.Globalization; 
    using System.Diagnostics.Contracts;

    [Serializable]
[System.Runtime.InteropServices.ComVisible(true)] 
    public class CaseInsensitiveComparer : IComparer {
        private CompareInfo m_compareInfo; 
        private static CaseInsensitiveComparer m_InvariantCaseInsensitiveComparer; 

        public CaseInsensitiveComparer() { 
            m_compareInfo = CultureInfo.CurrentCulture.CompareInfo;
        }

        public CaseInsensitiveComparer(CultureInfo culture) { 
            if (culture==null) {
                throw new ArgumentNullException("culture"); 
            } 
            Contract.EndContractBlock();
            m_compareInfo = culture.CompareInfo; 
        }

        public static CaseInsensitiveComparer Default
        { 
            get
            { 
                Contract.Ensures(Contract.Result() != null); 

                return new CaseInsensitiveComparer(CultureInfo.CurrentCulture); 
            }
        }

        public static CaseInsensitiveComparer DefaultInvariant 
        {
            get 
            { 
                Contract.Ensures(Contract.Result() != null);
 
                if (m_InvariantCaseInsensitiveComparer == null) {
                    m_InvariantCaseInsensitiveComparer = new CaseInsensitiveComparer(CultureInfo.InvariantCulture);
                }
                return m_InvariantCaseInsensitiveComparer; 
            }
        } 
 
        // Behaves exactly like Comparer.Default.Compare except that the comparison is case insensitive
        // Compares two Objects by calling CompareTo.  If a == 
        // b,0 is returned.  If a implements
        // IComparable, a.CompareTo(b) is returned.  If a
        // doesn't implement IComparable and b does,
        // -(b.CompareTo(a)) is returned, otherwise an 
        // exception is thrown.
        // 
        public int Compare(Object a, Object b) { 
            String sa = a as String;
            String sb = b as String; 
            if (sa != null && sb != null)
                return m_compareInfo.Compare(sa, sb, CompareOptions.IgnoreCase);
            else
                return Comparer.Default.Compare(a,b); 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK