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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignBindingPropertyDescriptor.cs
- ScrollBarAutomationPeer.cs
- DesignerLoader.cs
- HttpCapabilitiesSectionHandler.cs
- fixedPageContentExtractor.cs
- DbParameterCollection.cs
- InProcStateClientManager.cs
- COM2ExtendedUITypeEditor.cs
- C14NUtil.cs
- ColorMap.cs
- TraceXPathNavigator.cs
- parserscommon.cs
- HTMLTextWriter.cs
- SafeNativeMethods.cs
- PartialCachingAttribute.cs
- TaskFileService.cs
- UnsupportedPolicyOptionsException.cs
- WrappedIUnknown.cs
- CapabilitiesAssignment.cs
- ImageCodecInfo.cs
- uribuilder.cs
- DigestComparer.cs
- DBParameter.cs
- ExternalCalls.cs
- PathParser.cs
- PolicyValidator.cs
- PointAnimationUsingPath.cs
- UdpSocket.cs
- InvalidDataException.cs
- XmlSchemas.cs
- ExpressionBindingCollection.cs
- ErrorRuntimeConfig.cs
- BooleanExpr.cs
- Misc.cs
- ClipboardProcessor.cs
- xmlsaver.cs
- MarginCollapsingState.cs
- Material.cs
- FastPropertyAccessor.cs
- Int16.cs
- DataGridPageChangedEventArgs.cs
- DataGridViewLinkCell.cs
- DiagnosticsConfiguration.cs
- AttributeInfo.cs
- WindowPattern.cs
- SHA1Managed.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- ColorTransform.cs
- EventData.cs
- ElapsedEventArgs.cs
- TypeConverterHelper.cs
- Int32AnimationBase.cs
- WebRequestModuleElement.cs
- _SecureChannel.cs
- TextProperties.cs
- NavigatorOutput.cs
- LockedHandleGlyph.cs
- WpfXamlMember.cs
- ToolStripItem.cs
- MediaContextNotificationWindow.cs
- InternalMappingException.cs
- FormatSettings.cs
- OdbcEnvironmentHandle.cs
- ToolZone.cs
- MemberCollection.cs
- AssertSection.cs
- PrtCap_Base.cs
- CacheForPrimitiveTypes.cs
- DbParameterCollectionHelper.cs
- ProbeRequestResponseAsyncResult.cs
- BindingOperations.cs
- ComplexPropertyEntry.cs
- SqlTypesSchemaImporter.cs
- Hashtable.cs
- KnownBoxes.cs
- BaseTemplateCodeDomTreeGenerator.cs
- PhysicalOps.cs
- StylusDownEventArgs.cs
- StateMachineHelpers.cs
- ErrorFormatterPage.cs
- TriggerAction.cs
- ObjectConverter.cs
- DrawingAttributesDefaultValueFactory.cs
- HeaderCollection.cs
- SettingsBase.cs
- DispatcherExceptionFilterEventArgs.cs
- ErrorReporting.cs
- ExpanderAutomationPeer.cs
- LayoutTable.cs
- SqlProfileProvider.cs
- PageAsyncTask.cs
- FullTextState.cs
- PageContentAsyncResult.cs
- DefaultExpressionVisitor.cs
- DataGridViewCellFormattingEventArgs.cs
- EnumValidator.cs
- CoTaskMemUnicodeSafeHandle.cs
- ApplicationActivator.cs
- CursorConverter.cs
- AppDomainUnloadedException.cs