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
- HttpRequestWrapper.cs
- PriorityItem.cs
- SizeAnimationBase.cs
- RegexStringValidator.cs
- ColorConvertedBitmap.cs
- FileRecordSequenceHelper.cs
- VisualBasicSettingsHandler.cs
- XPathNodeHelper.cs
- DataGridColumn.cs
- FixedHighlight.cs
- KeyInterop.cs
- EditingCoordinator.cs
- WebResourceUtil.cs
- ListDictionary.cs
- PathFigureCollectionValueSerializer.cs
- Point3DAnimationUsingKeyFrames.cs
- Configuration.cs
- TraceUtility.cs
- RuntimeResourceSet.cs
- TableCell.cs
- MenuAdapter.cs
- CopyEncoder.cs
- Dynamic.cs
- DataGridHyperlinkColumn.cs
- PointIndependentAnimationStorage.cs
- SqlWebEventProvider.cs
- FreezableCollection.cs
- CanExpandCollapseAllConverter.cs
- UrlPath.cs
- TypeConstant.cs
- Misc.cs
- NegatedCellConstant.cs
- GridProviderWrapper.cs
- EventDescriptor.cs
- Attribute.cs
- listitem.cs
- ProfileManager.cs
- BooleanFunctions.cs
- ConnectionProviderAttribute.cs
- FormViewInsertEventArgs.cs
- LazyLoadBehavior.cs
- WinEventTracker.cs
- ChangeInterceptorAttribute.cs
- CalendarDay.cs
- Rotation3DAnimationUsingKeyFrames.cs
- WsatTransactionFormatter.cs
- DeviceContext2.cs
- MouseGesture.cs
- Match.cs
- EnumerableRowCollection.cs
- OciHandle.cs
- EmptyElement.cs
- DataControlButton.cs
- ResourceType.cs
- WebSysDescriptionAttribute.cs
- ServiceThrottle.cs
- ReferencedType.cs
- VariableAction.cs
- Timeline.cs
- updateconfighost.cs
- String.cs
- WebEncodingValidatorAttribute.cs
- Stroke.cs
- _LoggingObject.cs
- PointAnimationUsingPath.cs
- Stack.cs
- SourceLineInfo.cs
- HttpCapabilitiesBase.cs
- HitTestFilterBehavior.cs
- TextFormatterContext.cs
- AuthorizationRule.cs
- BackoffTimeoutHelper.cs
- Accessible.cs
- BulletedList.cs
- ProcessThreadCollection.cs
- VirtualPathUtility.cs
- Knowncolors.cs
- GetPageNumberCompletedEventArgs.cs
- TransportBindingElement.cs
- UrlMappingsModule.cs
- QueryStringParameter.cs
- DecimalConstantAttribute.cs
- Compiler.cs
- GenericRootAutomationPeer.cs
- CheckBox.cs
- PeerPresenceInfo.cs
- EventLog.cs
- x509utils.cs
- MenuItemStyleCollection.cs
- WorkflowIdleElement.cs
- ClockGroup.cs
- Graph.cs
- TextOptions.cs
- NativeObjectSecurity.cs
- BamlVersionHeader.cs
- EdmFunctionAttribute.cs
- Parser.cs
- ScopeCollection.cs
- ISAPIWorkerRequest.cs
- DesigntimeLicenseContext.cs