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
- UserPersonalizationStateInfo.cs
- PartialClassGenerationTask.cs
- HttpResponseInternalBase.cs
- XmlSchemaIdentityConstraint.cs
- X509Extension.cs
- WinEventTracker.cs
- EntityUtil.cs
- ProcessThread.cs
- DataTableMappingCollection.cs
- SecureStringHasher.cs
- basemetadatamappingvisitor.cs
- HttpRequest.cs
- DateRangeEvent.cs
- ComplexLine.cs
- ActivityBindForm.Designer.cs
- Vector.cs
- ApplicationFileParser.cs
- Rectangle.cs
- RotationValidation.cs
- StringArrayConverter.cs
- BindToObject.cs
- MobileContainerDesigner.cs
- BaseCollection.cs
- SafeCryptHandles.cs
- FormsIdentity.cs
- Pkcs7Signer.cs
- CachedFontFamily.cs
- ValidatedControlConverter.cs
- RijndaelManaged.cs
- OleDbConnectionFactory.cs
- MDIWindowDialog.cs
- XPathQueryGenerator.cs
- FontEmbeddingManager.cs
- MethodRental.cs
- ParameterReplacerVisitor.cs
- DayRenderEvent.cs
- sqlnorm.cs
- _UriSyntax.cs
- DispatcherProcessingDisabled.cs
- SHA384Managed.cs
- EventWaitHandleSecurity.cs
- DetailsViewDeletedEventArgs.cs
- _ConnectStream.cs
- RoleManagerEventArgs.cs
- TextParagraphProperties.cs
- ArgIterator.cs
- OAVariantLib.cs
- PathHelper.cs
- Assert.cs
- DataGrid.cs
- DebugView.cs
- RelationshipSet.cs
- OleDbPermission.cs
- BookmarkScopeInfo.cs
- GatewayIPAddressInformationCollection.cs
- RoleService.cs
- WebPartMenu.cs
- EntityClassGenerator.cs
- XmlHierarchicalEnumerable.cs
- UshortList2.cs
- ValueQuery.cs
- OuterGlowBitmapEffect.cs
- Graphics.cs
- DeclarativeCatalogPart.cs
- ReachSerializationCacheItems.cs
- AlternateView.cs
- ProcessActivityTreeOptions.cs
- FlowDocument.cs
- OdbcInfoMessageEvent.cs
- TextDecorationCollectionConverter.cs
- ObfuscateAssemblyAttribute.cs
- TextBlock.cs
- ImageListStreamer.cs
- COSERVERINFO.cs
- DataGridTableCollection.cs
- X509CertificateStore.cs
- Schema.cs
- TableSectionStyle.cs
- JournalEntry.cs
- ColumnHeader.cs
- BoundPropertyEntry.cs
- DataComponentGenerator.cs
- EncryptedType.cs
- EventBuilder.cs
- TextFormatterImp.cs
- DatagridviewDisplayedBandsData.cs
- PageStatePersister.cs
- AuthenticationConfig.cs
- SQLDecimalStorage.cs
- ExceptionUtil.cs
- DesignSurfaceCollection.cs
- FixedSOMTableRow.cs
- ScrollProperties.cs
- WebPartVerbCollection.cs
- Path.cs
- NameSpaceExtractor.cs
- GeneralTransform3DTo2DTo3D.cs
- ConfigXmlSignificantWhitespace.cs
- StateManagedCollection.cs
- ComponentChangingEvent.cs