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
- BulletedList.cs
- RootCodeDomSerializer.cs
- ExpressionEditor.cs
- contentDescriptor.cs
- Reference.cs
- smtpconnection.cs
- MediaTimeline.cs
- SiteMapHierarchicalDataSourceView.cs
- CultureInfoConverter.cs
- DataGridViewControlCollection.cs
- CustomErrorCollection.cs
- PngBitmapEncoder.cs
- CodeLinePragma.cs
- ContextMenu.cs
- DatagridviewDisplayedBandsData.cs
- SecuritySessionFilter.cs
- ProbeDuplexAsyncResult.cs
- smtpconnection.cs
- DiscriminatorMap.cs
- PointKeyFrameCollection.cs
- MediaContext.cs
- DesignTimeParseData.cs
- ToolZone.cs
- SmiRecordBuffer.cs
- WebPartAuthorizationEventArgs.cs
- SelectedDatesCollection.cs
- SrgsNameValueTag.cs
- IisTraceListener.cs
- PageMediaType.cs
- TabletCollection.cs
- PrintEvent.cs
- RedistVersionInfo.cs
- Tracer.cs
- Helpers.cs
- DynamicObjectAccessor.cs
- TemplateNameScope.cs
- SingleSelectRootGridEntry.cs
- XmlSchemaSimpleType.cs
- LineBreak.cs
- ParentUndoUnit.cs
- MessageBox.cs
- LineBreak.cs
- securestring.cs
- InplaceBitmapMetadataWriter.cs
- WebPartExportVerb.cs
- CompatibleComparer.cs
- DictionarySectionHandler.cs
- FlowDocumentView.cs
- GridItemProviderWrapper.cs
- ColorConvertedBitmap.cs
- BitmapDecoder.cs
- SafeProcessHandle.cs
- HijriCalendar.cs
- AndCondition.cs
- AsyncCompletedEventArgs.cs
- _HelperAsyncResults.cs
- DataKey.cs
- HtmlMeta.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- ProcessHostMapPath.cs
- XamlFxTrace.cs
- WorkflowInstanceContextProvider.cs
- ImageList.cs
- Conditional.cs
- Literal.cs
- ADMembershipProvider.cs
- UserMapPath.cs
- XmlAttributeCache.cs
- WindowCollection.cs
- Solver.cs
- DependentTransaction.cs
- DbProviderFactories.cs
- KerberosSecurityTokenAuthenticator.cs
- _AutoWebProxyScriptEngine.cs
- SmiTypedGetterSetter.cs
- EntityDataSource.cs
- Boolean.cs
- CodeGen.cs
- WebContext.cs
- XmlBufferReader.cs
- GridViewHeaderRowPresenter.cs
- mda.cs
- ControlPropertyNameConverter.cs
- AuthenticationModuleElement.cs
- CannotUnloadAppDomainException.cs
- PrinterSettings.cs
- MsmqDiagnostics.cs
- EditingCoordinator.cs
- MouseButtonEventArgs.cs
- PackagePartCollection.cs
- PrintDialog.cs
- ReferenceEqualityComparer.cs
- ProcessModule.cs
- ApplicationTrust.cs
- Simplifier.cs
- UserControlParser.cs
- AddInController.cs
- RegexRunner.cs
- SqlBulkCopyColumnMappingCollection.cs
- XmlReader.cs