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
- SkinBuilder.cs
- EdmScalarPropertyAttribute.cs
- AppliedDeviceFiltersEditor.cs
- SecondaryIndex.cs
- RegisteredArrayDeclaration.cs
- SystemResourceKey.cs
- DecimalMinMaxAggregationOperator.cs
- ProxySimple.cs
- ModulesEntry.cs
- ContentType.cs
- SinglePageViewer.cs
- Soap.cs
- ExpressionBuilderContext.cs
- SectionRecord.cs
- regiisutil.cs
- Repeater.cs
- EastAsianLunisolarCalendar.cs
- ErrorRuntimeConfig.cs
- TypeBinaryExpression.cs
- UrlMapping.cs
- CssStyleCollection.cs
- TargetConverter.cs
- EmptyControlCollection.cs
- EntityDataSourceMemberPath.cs
- UInt16.cs
- TextEffect.cs
- UnionExpr.cs
- DbConnectionPoolCounters.cs
- Ppl.cs
- PropertyValueUIItem.cs
- SessionPageStatePersister.cs
- TimeSpanConverter.cs
- InputScopeConverter.cs
- WorkflowInstanceQuery.cs
- ValueQuery.cs
- OnOperation.cs
- HandlerBase.cs
- DirectionalLight.cs
- ItemsPanelTemplate.cs
- PointAnimationUsingKeyFrames.cs
- LabelEditEvent.cs
- TextWriterTraceListener.cs
- OutputCacheProviderCollection.cs
- DomNameTable.cs
- AppliesToBehaviorDecisionTable.cs
- CLRBindingWorker.cs
- HtmlInputButton.cs
- xmlglyphRunInfo.cs
- BasicCommandTreeVisitor.cs
- IDQuery.cs
- NumberFunctions.cs
- WebPartEditorApplyVerb.cs
- AspNetSynchronizationContext.cs
- BinaryUtilClasses.cs
- ScriptingScriptResourceHandlerSection.cs
- ObjectDataSource.cs
- Stylesheet.cs
- TreeNodeBindingCollection.cs
- Hash.cs
- ResourcesBuildProvider.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ContextMenuService.cs
- IndicCharClassifier.cs
- StatusBarAutomationPeer.cs
- Events.cs
- DataGridViewColumn.cs
- TargetControlTypeCache.cs
- HtmlEmptyTagControlBuilder.cs
- DataGridViewAccessibleObject.cs
- FloaterParaClient.cs
- PrefixHandle.cs
- DropTarget.cs
- BatchServiceHost.cs
- XmlAttributeCollection.cs
- SimpleWorkerRequest.cs
- SrgsRule.cs
- TimeZone.cs
- GacUtil.cs
- SqlWriter.cs
- InvokeProviderWrapper.cs
- XmlParserContext.cs
- SerializerWriterEventHandlers.cs
- TemplateAction.cs
- SoapMessage.cs
- _SSPIWrapper.cs
- AddingNewEventArgs.cs
- safelink.cs
- OleDbPropertySetGuid.cs
- SizeFConverter.cs
- DocumentCollection.cs
- lengthconverter.cs
- xmlglyphRunInfo.cs
- DataGridViewRow.cs
- XmlStreamNodeWriter.cs
- TraceContextRecord.cs
- PagerSettings.cs
- MultiDataTrigger.cs
- Activity.cs
- MaterializeFromAtom.cs
- DefaultTypeArgumentAttribute.cs