Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- UIElement3DAutomationPeer.cs
- AppLevelCompilationSectionCache.cs
- SafeFileHandle.cs
- LayoutDump.cs
- ContentElement.cs
- CheckBoxDesigner.cs
- XmlNavigatorStack.cs
- DebugView.cs
- BamlStream.cs
- ButtonChrome.cs
- XPathCompileException.cs
- ProxySimple.cs
- FrameSecurityDescriptor.cs
- TextFormatterContext.cs
- TableLayoutSettingsTypeConverter.cs
- XLinq.cs
- PrivacyNoticeBindingElement.cs
- AudioFileOut.cs
- MsmqIntegrationMessagePool.cs
- MethodToken.cs
- VectorConverter.cs
- TraceRecord.cs
- ImagingCache.cs
- ComponentResourceKeyConverter.cs
- SystemIPInterfaceProperties.cs
- CodeArrayCreateExpression.cs
- LocalBuilder.cs
- PeerNameRegistration.cs
- RemotingException.cs
- UniqueIdentifierService.cs
- UriSection.cs
- MDIControlStrip.cs
- XPathDocumentNavigator.cs
- TabPage.cs
- WebPartTransformerAttribute.cs
- RouteValueExpressionBuilder.cs
- DispatcherSynchronizationContext.cs
- Timer.cs
- HtmlDocument.cs
- SafeThemeHandle.cs
- PackWebResponse.cs
- NameSpaceEvent.cs
- SharedStatics.cs
- BitmapEncoder.cs
- UnsafeNetInfoNativeMethods.cs
- WsatServiceAddress.cs
- TreeViewTemplateSelector.cs
- EmbeddedMailObjectCollectionEditor.cs
- PerformanceCounterManager.cs
- NumericUpDown.cs
- EventMappingSettingsCollection.cs
- DependencyPropertyValueSerializer.cs
- CursorConverter.cs
- KeyValuePairs.cs
- SystemNetworkInterface.cs
- QilTernary.cs
- ListGeneralPage.cs
- DbConnectionPoolGroupProviderInfo.cs
- TableLayoutStyleCollection.cs
- ConstraintManager.cs
- SystemException.cs
- PerformanceCounterPermissionEntry.cs
- PointKeyFrameCollection.cs
- TextModifier.cs
- UnsafeNativeMethods.cs
- SecurityIdentifierElementCollection.cs
- WebConfigurationManager.cs
- ActiveXSite.cs
- RoutedEventHandlerInfo.cs
- Link.cs
- DropDownHolder.cs
- OracleFactory.cs
- ExpressionVisitor.cs
- ClientRolePrincipal.cs
- RoutedEventValueSerializer.cs
- Vector3DConverter.cs
- EmissiveMaterial.cs
- NgenServicingAttributes.cs
- RtfControls.cs
- HashRepartitionStream.cs
- ThreadInterruptedException.cs
- MD5.cs
- SatelliteContractVersionAttribute.cs
- NullToBooleanConverter.cs
- AutomationPattern.cs
- RC2CryptoServiceProvider.cs
- SqlDataSourceStatusEventArgs.cs
- ResourcePool.cs
- SharedUtils.cs
- StatusBarItem.cs
- TypeResolvingOptions.cs
- TypeListConverter.cs
- WebPartCatalogCloseVerb.cs
- SymbolType.cs
- ProcessModelSection.cs
- ValuePattern.cs
- AdapterDictionary.cs
- FixedSOMTableCell.cs
- SortQuery.cs
- DataServiceProviderMethods.cs