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
- XmlEventCache.cs
- TabControl.cs
- IPEndPointCollection.cs
- Typeface.cs
- ListBindableAttribute.cs
- URL.cs
- SqlProvider.cs
- IdentifierService.cs
- DefaultCommandConverter.cs
- SignedXml.cs
- StringFormat.cs
- MulticastDelegate.cs
- Empty.cs
- CreateUserWizard.cs
- querybuilder.cs
- DataKeyArray.cs
- FocusManager.cs
- FixedTextContainer.cs
- CollectionConverter.cs
- WindowsScrollBar.cs
- RecordManager.cs
- EventSinkHelperWriter.cs
- AlternationConverter.cs
- WorkflowQueueInfo.cs
- Compiler.cs
- PolicyLevel.cs
- TypefaceMap.cs
- DefaultParameterValueAttribute.cs
- TreeViewBindingsEditorForm.cs
- ImageKeyConverter.cs
- VirtualPathUtility.cs
- AvTrace.cs
- FillErrorEventArgs.cs
- SerializationException.cs
- CodeGotoStatement.cs
- AnnouncementEndpoint.cs
- MetabaseReader.cs
- TTSEngineTypes.cs
- BoundColumn.cs
- ToolbarAUtomationPeer.cs
- SymDocumentType.cs
- EFDataModelProvider.cs
- ValidationErrorCollection.cs
- CodeRemoveEventStatement.cs
- ToolboxControl.cs
- Drawing.cs
- ParameterModifier.cs
- ToolStripSeparator.cs
- CodeDirectiveCollection.cs
- MarkerProperties.cs
- AssociatedControlConverter.cs
- PnrpPeerResolverElement.cs
- ScrollViewerAutomationPeer.cs
- DesignerCatalogPartChrome.cs
- PointHitTestResult.cs
- GridViewUpdatedEventArgs.cs
- BitmapDownload.cs
- ProjectionPathSegment.cs
- InfoCardSymmetricAlgorithm.cs
- WebPartEditorOkVerb.cs
- RegexTree.cs
- CodeAttributeArgument.cs
- TextBoxBase.cs
- RangeBase.cs
- DesignerDataTable.cs
- ChameleonKey.cs
- mediapermission.cs
- ExclusiveHandle.cs
- LocationUpdates.cs
- HMACSHA384.cs
- ConnectionProviderAttribute.cs
- DataGridCell.cs
- RepeatButtonAutomationPeer.cs
- ContentPlaceHolder.cs
- PtsPage.cs
- ExpressionNormalizer.cs
- WorkflowApplicationTerminatedException.cs
- _UriSyntax.cs
- MonikerProxyAttribute.cs
- StreamGeometryContext.cs
- MainMenu.cs
- BamlLocalizableResource.cs
- HandlerBase.cs
- SRGSCompiler.cs
- CommandManager.cs
- ScriptServiceAttribute.cs
- ComboBoxAutomationPeer.cs
- BitmapMetadata.cs
- XmlReader.cs
- FileLoadException.cs
- BitSet.cs
- SHA1.cs
- TimeEnumHelper.cs
- Matrix3D.cs
- HwndProxyElementProvider.cs
- DataControlButton.cs
- Lasso.cs
- StrongNameIdentityPermission.cs
- Vector.cs
- DefaultHttpHandler.cs