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
- InvalidOleVariantTypeException.cs
- XmlSerializerFactory.cs
- SynchronizedKeyedCollection.cs
- DummyDataSource.cs
- WebPartCatalogCloseVerb.cs
- CharEntityEncoderFallback.cs
- RealizedColumnsBlock.cs
- AnnotationMap.cs
- DeferredSelectedIndexReference.cs
- DataSourceView.cs
- CheckBox.cs
- ApplicationBuildProvider.cs
- KeySpline.cs
- FreeIndexList.cs
- UnregisterInfo.cs
- BrushValueSerializer.cs
- CacheEntry.cs
- DoubleLink.cs
- TypeTypeConverter.cs
- WorkflowOperationErrorHandler.cs
- GridItem.cs
- EnumerableCollectionView.cs
- ApplicationGesture.cs
- NetworkInformationPermission.cs
- ColorConvertedBitmap.cs
- httpapplicationstate.cs
- WindowsScroll.cs
- GeometryCombineModeValidation.cs
- BrowserCapabilitiesCompiler.cs
- RNGCryptoServiceProvider.cs
- TiffBitmapEncoder.cs
- BuiltInExpr.cs
- CompositeCollectionView.cs
- Configuration.cs
- RIPEMD160.cs
- EmbeddedMailObject.cs
- LinearGradientBrush.cs
- BypassElement.cs
- EntityDataSourceConfigureObjectContext.cs
- UnauthorizedAccessException.cs
- COM2ExtendedUITypeEditor.cs
- FormatConvertedBitmap.cs
- VoiceObjectToken.cs
- XmlEncoding.cs
- SQLMoney.cs
- ResolveMatchesCD1.cs
- EntityAdapter.cs
- ChannelServices.cs
- JsonClassDataContract.cs
- ItemCheckedEvent.cs
- ServiceX509SecurityTokenProvider.cs
- AssemblyAssociatedContentFileAttribute.cs
- SystemSounds.cs
- OdbcException.cs
- SafeSystemMetrics.cs
- ExistsInCollection.cs
- Random.cs
- XmlTypeAttribute.cs
- AsyncPostBackTrigger.cs
- XsdDataContractExporter.cs
- Parallel.cs
- EdmScalarPropertyAttribute.cs
- JoinElimination.cs
- _NTAuthentication.cs
- DataTemplateKey.cs
- SiteMapDataSourceView.cs
- ListBase.cs
- _MultipleConnectAsync.cs
- AsymmetricKeyExchangeFormatter.cs
- TemplateField.cs
- ValueSerializerAttribute.cs
- UidManager.cs
- BaseTemplateParser.cs
- ConfigXmlCDataSection.cs
- SQLDoubleStorage.cs
- OrderByExpression.cs
- SchemaImporterExtension.cs
- ToolStripPanelRow.cs
- HeaderUtility.cs
- iisPickupDirectory.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- SqlBulkCopyColumnMappingCollection.cs
- Route.cs
- DirectoryInfo.cs
- Visual3D.cs
- FileDialogCustomPlaces.cs
- SymbolDocumentInfo.cs
- DbParameterCollection.cs
- TypeContext.cs
- ResourceDictionaryCollection.cs
- RotateTransform3D.cs
- PackageDigitalSignature.cs
- CodeAttachEventStatement.cs
- RelationshipEndCollection.cs
- ListViewItem.cs
- X500Name.cs
- Rectangle.cs
- CodeBlockBuilder.cs
- CryptoConfig.cs
- ImageDrawing.cs