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
- ParseNumbers.cs
- PopupEventArgs.cs
- DocumentViewer.cs
- COSERVERINFO.cs
- SafeHandle.cs
- ContextBase.cs
- M3DUtil.cs
- FileCodeGroup.cs
- Path.cs
- CommandEventArgs.cs
- DesignerVerbToolStripMenuItem.cs
- RectangleConverter.cs
- InfoCardXmlSerializer.cs
- SectionInformation.cs
- HostedHttpContext.cs
- SpeechSynthesizer.cs
- IndicFontClient.cs
- SmtpAuthenticationManager.cs
- TraceHwndHost.cs
- PrePrepareMethodAttribute.cs
- References.cs
- RewritingPass.cs
- PassportIdentity.cs
- OdbcReferenceCollection.cs
- basemetadatamappingvisitor.cs
- DataGridCaption.cs
- ScriptReference.cs
- dtdvalidator.cs
- AggregateNode.cs
- XmlDomTextWriter.cs
- Policy.cs
- Light.cs
- DefaultValueAttribute.cs
- NamespaceList.cs
- CharUnicodeInfo.cs
- OdbcRowUpdatingEvent.cs
- VariableAction.cs
- TcpClientSocketManager.cs
- IndividualDeviceConfig.cs
- ControlBuilder.cs
- embossbitmapeffect.cs
- HealthMonitoringSection.cs
- PropertyGridView.cs
- XmlObjectSerializerReadContextComplex.cs
- Interlocked.cs
- TypeConverterBase.cs
- RawStylusActions.cs
- MethodToken.cs
- DerivedKeySecurityToken.cs
- ListenerBinder.cs
- XmlDocument.cs
- XMLUtil.cs
- MessageQueueAccessControlEntry.cs
- StateBag.cs
- PnrpPermission.cs
- MatrixStack.cs
- ValidationVisibilityAttribute.cs
- PlainXmlDeserializer.cs
- InertiaExpansionBehavior.cs
- TdsParserSafeHandles.cs
- DataGridViewColumnStateChangedEventArgs.cs
- WriteLineDesigner.xaml.cs
- WmlCommandAdapter.cs
- ContainerSelectorGlyph.cs
- ProcessModelSection.cs
- RNGCryptoServiceProvider.cs
- DocumentReferenceCollection.cs
- DataKeyPropertyAttribute.cs
- QilTypeChecker.cs
- ExcludeFromCodeCoverageAttribute.cs
- XmlElementCollection.cs
- BufferedOutputStream.cs
- LoginName.cs
- MultiView.cs
- ConstrainedGroup.cs
- ObjectDataSourceMethodEditor.cs
- BindingOperations.cs
- DefaultPrintController.cs
- JavascriptCallbackResponseProperty.cs
- Interlocked.cs
- UIElementAutomationPeer.cs
- DoubleStorage.cs
- UIHelper.cs
- WebSysDisplayNameAttribute.cs
- SessionParameter.cs
- XmlCharCheckingWriter.cs
- InkCanvasFeedbackAdorner.cs
- KeysConverter.cs
- XamlGridLengthSerializer.cs
- SystemInformation.cs
- Light.cs
- ModelItemKeyValuePair.cs
- StackSpiller.cs
- ClientUriBehavior.cs
- IISUnsafeMethods.cs
- QilInvokeEarlyBound.cs
- SessionParameter.cs
- SerTrace.cs
- XamlHostingSection.cs
- DataGridViewTextBoxColumn.cs