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
- EditingCoordinator.cs
- FrameworkContentElement.cs
- BounceEase.cs
- BaseCollection.cs
- SequenceQuery.cs
- SectionUpdates.cs
- SevenBitStream.cs
- SparseMemoryStream.cs
- ContentPlaceHolder.cs
- ForeignKeyConstraint.cs
- PointF.cs
- CookielessHelper.cs
- DiscoveryEndpoint.cs
- GridPattern.cs
- TableSectionStyle.cs
- LineMetrics.cs
- SystemIPv4InterfaceProperties.cs
- XamlStyleSerializer.cs
- bindurihelper.cs
- TemplatePartAttribute.cs
- NgenServicingAttributes.cs
- MimeWriter.cs
- DbModificationClause.cs
- InputScopeAttribute.cs
- DataGridCellEditEndingEventArgs.cs
- IIS7UserPrincipal.cs
- WebPartConnectionsCancelVerb.cs
- URLMembershipCondition.cs
- Dispatcher.cs
- Win32Native.cs
- DbUpdateCommandTree.cs
- MaterialGroup.cs
- CompleteWizardStep.cs
- SmiContext.cs
- SchemaLookupTable.cs
- InternalCache.cs
- ToolStripDropTargetManager.cs
- GroupLabel.cs
- CroppedBitmap.cs
- WebZone.cs
- PackWebRequestFactory.cs
- NullableConverter.cs
- PageResolution.cs
- StyleBamlRecordReader.cs
- PickBranch.cs
- ObjectDataSourceStatusEventArgs.cs
- Point4D.cs
- GroupDescription.cs
- FastEncoder.cs
- ControlBuilder.cs
- RadioButton.cs
- TargetException.cs
- ComNativeDescriptor.cs
- EntityTemplateFactory.cs
- PKCS1MaskGenerationMethod.cs
- CurrentChangingEventManager.cs
- ImageMapEventArgs.cs
- MergePropertyDescriptor.cs
- SqlError.cs
- Debugger.cs
- JsonFaultDetail.cs
- initElementDictionary.cs
- ProxyWebPartConnectionCollection.cs
- DataSourceCache.cs
- CountAggregationOperator.cs
- Int32EqualityComparer.cs
- Component.cs
- SchemaObjectWriter.cs
- ListCommandEventArgs.cs
- EUCJPEncoding.cs
- CompiledQueryCacheKey.cs
- BindingListCollectionView.cs
- XhtmlBasicSelectionListAdapter.cs
- ReservationCollection.cs
- Transform3DCollection.cs
- KeyGestureConverter.cs
- CellPartitioner.cs
- EventDescriptorCollection.cs
- HashCodeCombiner.cs
- SoapAttributeAttribute.cs
- DeclarativeCatalogPartDesigner.cs
- EntityDataSourceDataSelection.cs
- DbConnectionFactory.cs
- Predicate.cs
- ComponentTray.cs
- Thread.cs
- IProducerConsumerCollection.cs
- Root.cs
- CodeActivityContext.cs
- TemplateNameScope.cs
- TcpHostedTransportConfiguration.cs
- ObjectTypeMapping.cs
- TagMapCollection.cs
- ThreadExceptionDialog.cs
- DocumentEventArgs.cs
- EditingMode.cs
- ServiceMetadataContractBehavior.cs
- SetStateEventArgs.cs
- Math.cs
- XhtmlMobileTextWriter.cs