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
- APCustomTypeDescriptor.cs
- CatalogPartChrome.cs
- CodeActivityMetadata.cs
- LinqDataSourceDisposeEventArgs.cs
- DeploymentSectionCache.cs
- TrackingStringDictionary.cs
- WebPartHeaderCloseVerb.cs
- RoleManagerModule.cs
- AdornerLayer.cs
- CommandHelpers.cs
- ExecutionEngineException.cs
- SmiRecordBuffer.cs
- VirtualDirectoryMapping.cs
- XmlDeclaration.cs
- FixedSOMImage.cs
- ControlCachePolicy.cs
- ChtmlFormAdapter.cs
- XslAst.cs
- LinkedDataMemberFieldEditor.cs
- List.cs
- StorageConditionPropertyMapping.cs
- CompilerWrapper.cs
- PathSegmentCollection.cs
- DeferredTextReference.cs
- DataGridViewCellEventArgs.cs
- TextRunCache.cs
- CodeDesigner.cs
- ConfigurationPermission.cs
- dtdvalidator.cs
- DesignerPerfEventProvider.cs
- BufferedGraphics.cs
- InteropDesigner.xaml.cs
- EqualityComparer.cs
- ServiceModelEnumValidator.cs
- DataGridViewCellLinkedList.cs
- Roles.cs
- ByteStream.cs
- DbParameterCollection.cs
- CodeArrayCreateExpression.cs
- Timer.cs
- DataGridComponentEditor.cs
- ConsumerConnectionPoint.cs
- IOException.cs
- PersonalizationAdministration.cs
- WindowsStatic.cs
- GPStream.cs
- FixedNode.cs
- MultipleCopiesCollection.cs
- Win32.cs
- TypeInfo.cs
- MetadataArtifactLoaderResource.cs
- XPathNavigatorReader.cs
- TargetParameterCountException.cs
- FontFamilyIdentifier.cs
- XpsFilter.cs
- Visual3D.cs
- AddInActivator.cs
- DataListCommandEventArgs.cs
- HuffModule.cs
- DbSourceCommand.cs
- ReverseInheritProperty.cs
- FixedSOMTableRow.cs
- CachedCompositeFamily.cs
- ControlCachePolicy.cs
- AccessDataSourceDesigner.cs
- CompilerWrapper.cs
- PerfCounterSection.cs
- RegexMatch.cs
- FileLogRecordEnumerator.cs
- ClientSettings.cs
- ObjectIDGenerator.cs
- ExpressionConverter.cs
- ComboBox.cs
- InplaceBitmapMetadataWriter.cs
- DbFunctionCommandTree.cs
- ObjectViewEntityCollectionData.cs
- OleDbRowUpdatingEvent.cs
- PrintingPermission.cs
- XmlNodeList.cs
- ColumnResizeAdorner.cs
- RectangleGeometry.cs
- XmlSchemaExporter.cs
- ServiceMemoryGates.cs
- RegexGroupCollection.cs
- SQLMoneyStorage.cs
- _ProxyChain.cs
- UnauthorizedWebPart.cs
- ModelChangedEventArgsImpl.cs
- FormatConvertedBitmap.cs
- DataGridViewIntLinkedList.cs
- SHA1CryptoServiceProvider.cs
- PackageRelationship.cs
- SimpleType.cs
- RoleManagerSection.cs
- DateTimeOffsetStorage.cs
- DefaultDialogButtons.cs
- ErasingStroke.cs
- InputLanguage.cs
- BinaryReader.cs
- SQLDateTime.cs