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
- XPathChildIterator.cs
- MultilineStringConverter.cs
- PersianCalendar.cs
- XPathParser.cs
- LoginView.cs
- XmlReflectionMember.cs
- FileCodeGroup.cs
- HwndHostAutomationPeer.cs
- Exceptions.cs
- UserUseLicenseDictionaryLoader.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- ModuleBuilder.cs
- DateTimeStorage.cs
- SiteMapHierarchicalDataSourceView.cs
- TraceUtility.cs
- ByteFacetDescriptionElement.cs
- TableStyle.cs
- InvalidMessageContractException.cs
- XmlWellformedWriter.cs
- ContentControl.cs
- SurrogateSelector.cs
- SpecialTypeDataContract.cs
- DelayedRegex.cs
- DrawingDrawingContext.cs
- SiteMapSection.cs
- RuntimeWrappedException.cs
- ObjectStateManager.cs
- Tablet.cs
- CacheRequest.cs
- ListViewPagedDataSource.cs
- Pair.cs
- SqlNamer.cs
- DefaultObjectMappingItemCollection.cs
- CannotUnloadAppDomainException.cs
- SQLSingleStorage.cs
- DelegateArgument.cs
- IncrementalCompileAnalyzer.cs
- TableLayoutSettingsTypeConverter.cs
- RoleGroupCollectionEditor.cs
- PrintDialog.cs
- WebPartHelpVerb.cs
- ContentFileHelper.cs
- FormsAuthenticationEventArgs.cs
- PlainXmlSerializer.cs
- ProxyHelper.cs
- SafeFileHandle.cs
- UnaryNode.cs
- TrackingStringDictionary.cs
- StylusPointPropertyInfo.cs
- DataControlButton.cs
- HasCopySemanticsAttribute.cs
- ListSortDescription.cs
- FixedSOMImage.cs
- ParsedAttributeCollection.cs
- MasterPageBuildProvider.cs
- IndexerNameAttribute.cs
- SqlRowUpdatedEvent.cs
- ForeignKeyConstraint.cs
- Root.cs
- ObjectContext.cs
- HandledMouseEvent.cs
- NetworkCredential.cs
- compensatingcollection.cs
- DllNotFoundException.cs
- WebScriptMetadataMessage.cs
- bidPrivateBase.cs
- FieldBuilder.cs
- WebPartTracker.cs
- ValidationErrorCollection.cs
- TcpTransportElement.cs
- Bezier.cs
- Viewport2DVisual3D.cs
- WhitespaceRule.cs
- OracleDataAdapter.cs
- configsystem.cs
- X509ThumbprintKeyIdentifierClause.cs
- CLSCompliantAttribute.cs
- Point3DAnimationBase.cs
- QuaternionKeyFrameCollection.cs
- CommonDialog.cs
- PartialArray.cs
- DataErrorValidationRule.cs
- SignatureDescription.cs
- EventDescriptorCollection.cs
- DataService.cs
- ObjectStateFormatter.cs
- ProcessModule.cs
- ButtonFlatAdapter.cs
- HttpResponseInternalBase.cs
- ConfigurationHelpers.cs
- ManifestResourceInfo.cs
- ObjectQueryState.cs
- ButtonFieldBase.cs
- TextAction.cs
- Fx.cs
- RepeatButton.cs
- PeerNodeTraceRecord.cs
- WebBrowser.cs
- Int32EqualityComparer.cs
- NullReferenceException.cs