Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Common / Utils / CdpEqualityComparer.cs / 1 / CdpEqualityComparer.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Text; using System.Globalization; using System.Data.SqlTypes; using System.Diagnostics; namespace System.Data.Common.Utils { ////// Equality comparer implementation that uses case-sensitive ordinal comparison for strings. /// internal sealed class CdpEqualityComparer : IEqualityComparer { ////// Private constructor to ensure comparer is only accessed through the private CdpEqualityComparer() { } private static readonly IEqualityComparer s_defaultEqualityComparer = new CdpEqualityComparer(); ////// property. /// /// Gets instance of CdpEqualityComparer. /// static internal IEqualityComparer DefaultEqualityComparer { get { return s_defaultEqualityComparer; } } ////// This mirrors the .NET implementation of System.Collections.Comparer but /// uses an ordinal comparer for strings rather than a linguistic compare. /// /// First object to compare /// Second object to compare ///True if the arguments are equivalent; false otherwise bool IEqualityComparer.Equals(object x, object y) { // if the objects are equal by reference, return immediately if (x == y) { return true; } // if either one or the other objects is null, return false // (they cannot both be null, because otherwise the reference equality check // would have succeeded) if (null == x || null == y) { return false; } // if we're dealing with strings, special handling is required string xAsString = x as string; if (null != xAsString) { string yAsString = y as string; if (null != yAsString) { return StringComparer.Ordinal.Equals(xAsString, yAsString); } else { // string implements IComparable, so we can avoid a second cast return 0 == xAsString.CompareTo(y); } } // use first argument as IComparable IComparable xAsComparable = x as IComparable; if (null != xAsComparable) { return 0 == xAsComparable.CompareTo(y); } else { // default to Equals implementation return x.Equals(y); } } ////// Retursn hash code for given object. /// /// Object for which to produce hash code (throws if null) ///Hash code for argument int IEqualityComparer.GetHashCode(object obj) { Debug.Assert(null != obj); return obj.GetHashCode(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Text; using System.Globalization; using System.Data.SqlTypes; using System.Diagnostics; namespace System.Data.Common.Utils { ////// Equality comparer implementation that uses case-sensitive ordinal comparison for strings. /// internal sealed class CdpEqualityComparer : IEqualityComparer { ////// Private constructor to ensure comparer is only accessed through the private CdpEqualityComparer() { } private static readonly IEqualityComparer s_defaultEqualityComparer = new CdpEqualityComparer(); ////// property. /// /// Gets instance of CdpEqualityComparer. /// static internal IEqualityComparer DefaultEqualityComparer { get { return s_defaultEqualityComparer; } } ////// This mirrors the .NET implementation of System.Collections.Comparer but /// uses an ordinal comparer for strings rather than a linguistic compare. /// /// First object to compare /// Second object to compare ///True if the arguments are equivalent; false otherwise bool IEqualityComparer.Equals(object x, object y) { // if the objects are equal by reference, return immediately if (x == y) { return true; } // if either one or the other objects is null, return false // (they cannot both be null, because otherwise the reference equality check // would have succeeded) if (null == x || null == y) { return false; } // if we're dealing with strings, special handling is required string xAsString = x as string; if (null != xAsString) { string yAsString = y as string; if (null != yAsString) { return StringComparer.Ordinal.Equals(xAsString, yAsString); } else { // string implements IComparable, so we can avoid a second cast return 0 == xAsString.CompareTo(y); } } // use first argument as IComparable IComparable xAsComparable = x as IComparable; if (null != xAsComparable) { return 0 == xAsComparable.CompareTo(y); } else { // default to Equals implementation return x.Equals(y); } } ////// Retursn hash code for given object. /// /// Object for which to produce hash code (throws if null) ///Hash code for argument int IEqualityComparer.GetHashCode(object obj) { Debug.Assert(null != obj); return obj.GetHashCode(); } } } // 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
- ExpressionConverter.cs
- PrintControllerWithStatusDialog.cs
- Matrix3DConverter.cs
- HandleDictionary.cs
- Compilation.cs
- SchemaMapping.cs
- XmlAttribute.cs
- IDQuery.cs
- TiffBitmapEncoder.cs
- InputReport.cs
- UInt16Storage.cs
- HttpPostClientProtocol.cs
- WebPartMenu.cs
- ItemChangedEventArgs.cs
- TagNameToTypeMapper.cs
- NamespaceCollection.cs
- SQLResource.cs
- SerializationInfoEnumerator.cs
- ListViewCancelEventArgs.cs
- WebPartMovingEventArgs.cs
- BaseDataBoundControl.cs
- EntityDataSourceContextCreatingEventArgs.cs
- ActivitiesCollection.cs
- IdnElement.cs
- CompatibleComparer.cs
- BackgroundFormatInfo.cs
- LinqDataSourceHelper.cs
- xamlnodes.cs
- UmAlQuraCalendar.cs
- XmlNotation.cs
- DynamicQueryableWrapper.cs
- MsmqChannelListenerBase.cs
- DataServiceQueryException.cs
- PropertyValueEditor.cs
- PropertyNames.cs
- SendSecurityHeaderElementContainer.cs
- DbDataAdapter.cs
- XmlSchemaSimpleTypeUnion.cs
- CurrentChangingEventArgs.cs
- SQLConvert.cs
- Color.cs
- OleServicesContext.cs
- TransformerInfo.cs
- CLRBindingWorker.cs
- DataServiceProcessingPipeline.cs
- UpdateTracker.cs
- ArrangedElementCollection.cs
- DataContractSet.cs
- CodeExporter.cs
- CollectionBase.cs
- DataGridViewSelectedColumnCollection.cs
- PackagePart.cs
- SamlAuthenticationStatement.cs
- LateBoundBitmapDecoder.cs
- DynamicObject.cs
- CapabilitiesRule.cs
- WaveHeader.cs
- WarningException.cs
- OutputScopeManager.cs
- OverflowException.cs
- EncryptedReference.cs
- Pointer.cs
- PersistenceException.cs
- CodeChecksumPragma.cs
- ScrollProviderWrapper.cs
- WindowsPrincipal.cs
- TimerEventSubscription.cs
- XmlAttribute.cs
- TextParagraphProperties.cs
- AppearanceEditorPart.cs
- PersonalizationDictionary.cs
- ChannelManager.cs
- NativeCppClassAttribute.cs
- UnsafePeerToPeerMethods.cs
- SingleTagSectionHandler.cs
- XmlHierarchicalDataSourceView.cs
- ValidatedControlConverter.cs
- HtmlImage.cs
- DataGridViewRowPostPaintEventArgs.cs
- Int64Animation.cs
- Adorner.cs
- SoapEnumAttribute.cs
- _ListenerAsyncResult.cs
- FrameworkObject.cs
- ReadOnlyMetadataCollection.cs
- FileSystemInfo.cs
- XmlBinaryWriter.cs
- OdbcParameterCollection.cs
- OleDbInfoMessageEvent.cs
- MarshalByValueComponent.cs
- RewritingSimplifier.cs
- StorageEntityTypeMapping.cs
- DesignerForm.cs
- ControlCachePolicy.cs
- ClientRolePrincipal.cs
- PagesSection.cs
- RefType.cs
- XmlHierarchicalDataSourceView.cs
- ColorConverter.cs
- UrlMappingsModule.cs