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
- IndexOutOfRangeException.cs
- FileSecurity.cs
- ConnectionPointConverter.cs
- DoubleStorage.cs
- Baml2006ReaderFrame.cs
- ControlAdapter.cs
- ADMembershipProvider.cs
- ErrorView.xaml.cs
- Wildcard.cs
- Error.cs
- ContractInstanceProvider.cs
- IriParsingElement.cs
- X509Certificate2.cs
- UndirectedGraph.cs
- OuterGlowBitmapEffect.cs
- Vector3DAnimation.cs
- WindowsToolbarItemAsMenuItem.cs
- Signature.cs
- ImageSourceValueSerializer.cs
- CategoryNameCollection.cs
- WriteTimeStream.cs
- InvalidProgramException.cs
- XPathBinder.cs
- AllMembershipCondition.cs
- Debug.cs
- InternalBufferOverflowException.cs
- TextRange.cs
- Oid.cs
- Rfc2898DeriveBytes.cs
- ADMembershipUser.cs
- ZipIOExtraField.cs
- HandoffBehavior.cs
- HealthMonitoringSectionHelper.cs
- MULTI_QI.cs
- CollectionConverter.cs
- IdentitySection.cs
- GlobalProxySelection.cs
- Color.cs
- CacheRequest.cs
- QilUnary.cs
- VisualStyleElement.cs
- KeyManager.cs
- x509utils.cs
- TextTreeRootNode.cs
- _HelperAsyncResults.cs
- QuotedStringWriteStateInfo.cs
- HttpConfigurationSystem.cs
- GeneralTransform3DGroup.cs
- FileSystemWatcher.cs
- Gdiplus.cs
- SyndicationContent.cs
- RemoteWebConfigurationHost.cs
- RuleSetBrowserDialog.cs
- ISFClipboardData.cs
- SQLGuid.cs
- HierarchicalDataSourceControl.cs
- PenThread.cs
- ProgressiveCrcCalculatingStream.cs
- XslCompiledTransform.cs
- CodeCompileUnit.cs
- BooleanProjectedSlot.cs
- ViewSimplifier.cs
- MediaCommands.cs
- XmlExceptionHelper.cs
- InternalConfigHost.cs
- Model3D.cs
- XmlSchemaAppInfo.cs
- QilInvoke.cs
- CompilationRelaxations.cs
- ControlIdConverter.cs
- HandleRef.cs
- OwnerDrawPropertyBag.cs
- PeerInputChannel.cs
- X509CertificateStore.cs
- SmiGettersStream.cs
- AdornerLayer.cs
- EventProxy.cs
- CollectionViewGroupRoot.cs
- IdentityManager.cs
- DispatcherExceptionFilterEventArgs.cs
- LinkLabel.cs
- ServiceMetadataBehavior.cs
- DependencyPropertyValueSerializer.cs
- listitem.cs
- ApplicationInfo.cs
- FlowPosition.cs
- FileDialogPermission.cs
- OdbcInfoMessageEvent.cs
- XmlEncodedRawTextWriter.cs
- NativeMethods.cs
- assemblycache.cs
- FilterQuery.cs
- DoubleLinkListEnumerator.cs
- WriteTimeStream.cs
- EntityContainer.cs
- WindowVisualStateTracker.cs
- TreeViewImageIndexConverter.cs
- CfgRule.cs
- RuleProcessor.cs
- DefaultWorkflowSchedulerService.cs