Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- WindowsGraphics.cs
- Avt.cs
- XmlBindingWorker.cs
- Stylus.cs
- X509ChainElement.cs
- XmlHelper.cs
- CustomErrorCollection.cs
- Panel.cs
- DBDataPermission.cs
- DataGridViewTextBoxEditingControl.cs
- MemoryPressure.cs
- Visual3D.cs
- CoTaskMemHandle.cs
- FileDialogCustomPlacesCollection.cs
- FlowDocumentReader.cs
- TripleDESCryptoServiceProvider.cs
- IEnumerable.cs
- ListBoxAutomationPeer.cs
- basecomparevalidator.cs
- ChooseAction.cs
- EmptyControlCollection.cs
- WorkflowOwnershipException.cs
- ListViewEditEventArgs.cs
- WebPartUserCapability.cs
- StringAnimationBase.cs
- HttpTransportElement.cs
- GenericTextProperties.cs
- HttpValueCollection.cs
- TaskCanceledException.cs
- XmlCharType.cs
- WhitespaceRuleReader.cs
- LocatorBase.cs
- DoWhile.cs
- RectValueSerializer.cs
- RemotingSurrogateSelector.cs
- TrackingProfileDeserializationException.cs
- ColorContextHelper.cs
- SmtpFailedRecipientException.cs
- ObjectDataSourceStatusEventArgs.cs
- RawStylusSystemGestureInputReport.cs
- EntityProviderServices.cs
- PersonalizationStateInfo.cs
- Token.cs
- SharedConnectionInfo.cs
- RectangleGeometry.cs
- AmbiguousMatchException.cs
- HostingPreferredMapPath.cs
- AppDomainProtocolHandler.cs
- RelatedCurrencyManager.cs
- MenuCommand.cs
- XmlComplianceUtil.cs
- ListItemParagraph.cs
- DrawingServices.cs
- InputElement.cs
- UserControlBuildProvider.cs
- TrackingConditionCollection.cs
- OuterGlowBitmapEffect.cs
- ContainerActivationHelper.cs
- LinkDescriptor.cs
- CodeExpressionStatement.cs
- XmlSignatureProperties.cs
- Descriptor.cs
- EncodingDataItem.cs
- RuntimeCompatibilityAttribute.cs
- WebHeaderCollection.cs
- ALinqExpressionVisitor.cs
- StateItem.cs
- MutexSecurity.cs
- EntityDesignerUtils.cs
- Pair.cs
- assertwrapper.cs
- ByteFacetDescriptionElement.cs
- X509ChainPolicy.cs
- SiteMap.cs
- DeploymentSectionCache.cs
- Button.cs
- Material.cs
- TreePrinter.cs
- DispatcherHookEventArgs.cs
- BrowserDefinition.cs
- RangeBase.cs
- CopyNamespacesAction.cs
- XmlSchemaExternal.cs
- Socket.cs
- oledbconnectionstring.cs
- SQLCharsStorage.cs
- ChannelBase.cs
- NamespaceCollection.cs
- InheritanceUI.cs
- UIAgentMonitorHandle.cs
- SurrogateSelector.cs
- ISessionStateStore.cs
- Matrix3DConverter.cs
- RuleConditionDialog.Designer.cs
- UnsafeNativeMethods.cs
- BooleanExpr.cs
- ButtonField.cs
- SqlDataSource.cs
- Logging.cs
- ComponentResourceManager.cs