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
- HtmlHistory.cs
- UpdateCommand.cs
- FormsAuthenticationCredentials.cs
- XmlWrappingReader.cs
- Set.cs
- CustomAttributeSerializer.cs
- WSSecurityTokenSerializer.cs
- ControlParser.cs
- FixedSOMFixedBlock.cs
- Rule.cs
- MouseButtonEventArgs.cs
- ArgumentNullException.cs
- UInt32Converter.cs
- IPPacketInformation.cs
- StorageAssociationSetMapping.cs
- Token.cs
- PropertySet.cs
- _LocalDataStore.cs
- Attributes.cs
- GCHandleCookieTable.cs
- ThreadExceptionDialog.cs
- NavigationPropertyEmitter.cs
- StringOutput.cs
- VectorCollectionValueSerializer.cs
- XmlSignatureManifest.cs
- FastEncoderWindow.cs
- RequestQueryParser.cs
- SQLMoneyStorage.cs
- SHA1Managed.cs
- MessagePropertyFilter.cs
- BoundColumn.cs
- ListBox.cs
- CalendarDay.cs
- TaskExceptionHolder.cs
- HtmlButton.cs
- JsonUriDataContract.cs
- OracleSqlParser.cs
- IsolatedStorageException.cs
- TableDetailsRow.cs
- OpenTypeLayoutCache.cs
- FontStretchConverter.cs
- SHA512Managed.cs
- TreeViewAutomationPeer.cs
- URI.cs
- FormatterServices.cs
- RowTypeElement.cs
- PermissionListSet.cs
- UriExt.cs
- ObjectConverter.cs
- StartUpEventArgs.cs
- ConfigurationPropertyCollection.cs
- Timer.cs
- BitmapMetadataBlob.cs
- SqlStream.cs
- Transform3DGroup.cs
- ScrollData.cs
- CodeTypeReferenceCollection.cs
- TimelineGroup.cs
- IisTraceListener.cs
- WorkflowRuntimeServicesBehavior.cs
- ConfigXmlWhitespace.cs
- TemplatedMailWebEventProvider.cs
- SoundPlayer.cs
- CodeTypeReferenceExpression.cs
- DesignerCommandSet.cs
- UseAttributeSetsAction.cs
- HTMLTagNameToTypeMapper.cs
- Descriptor.cs
- BindingMAnagerBase.cs
- Validator.cs
- TableLayoutPanelCellPosition.cs
- CharacterShapingProperties.cs
- AttributeSetAction.cs
- ServiceControllerDesigner.cs
- AsyncOperation.cs
- TwoPhaseCommit.cs
- HtmlForm.cs
- MtomMessageEncodingElement.cs
- SelectedPathEditor.cs
- SubqueryRules.cs
- ImplicitInputBrush.cs
- SqlStatistics.cs
- SerTrace.cs
- ElementHost.cs
- SignatureResourcePool.cs
- CommonGetThemePartSize.cs
- LicenseManager.cs
- FormsAuthenticationUser.cs
- SafeNativeMethods.cs
- UpdatePanelTrigger.cs
- DesignerInterfaces.cs
- GridView.cs
- ServiceBehaviorAttribute.cs
- OSFeature.cs
- VBCodeProvider.cs
- CheckBoxBaseAdapter.cs
- QuestionEventArgs.cs
- TrackPointCollection.cs
- HelpInfo.cs
- WebConfigurationFileMap.cs