Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ExtendedPropertyDescriptor.cs
- ImageList.cs
- NonSerializedAttribute.cs
- SourceItem.cs
- XslTransform.cs
- SortDescription.cs
- FrameworkElementFactory.cs
- InternalsVisibleToAttribute.cs
- InputLanguageSource.cs
- TimelineGroup.cs
- DelegatingHeader.cs
- CalendarTable.cs
- XmlSchemaChoice.cs
- Tablet.cs
- DesignColumn.cs
- SecureUICommand.cs
- DesignerLoader.cs
- SafeArrayTypeMismatchException.cs
- CAGDesigner.cs
- TextServicesCompartmentContext.cs
- MimeXmlImporter.cs
- LongTypeConverter.cs
- Stopwatch.cs
- MediaCommands.cs
- HMACSHA384.cs
- PersonalizablePropertyEntry.cs
- SqlTriggerAttribute.cs
- ParameterModifier.cs
- MaskInputRejectedEventArgs.cs
- XmlTypeMapping.cs
- ListViewEditEventArgs.cs
- WebRequest.cs
- OptimalTextSource.cs
- StateMachineSubscription.cs
- NavigationProgressEventArgs.cs
- PrintControllerWithStatusDialog.cs
- AssemblyNameUtility.cs
- WorkflowServiceBehavior.cs
- WebPartVerbsEventArgs.cs
- Int32Converter.cs
- Stroke2.cs
- Model3DGroup.cs
- CounterSample.cs
- PaperSize.cs
- PageCodeDomTreeGenerator.cs
- UserUseLicenseDictionaryLoader.cs
- TreeViewImageGenerator.cs
- SpecularMaterial.cs
- LambdaCompiler.Unary.cs
- PropertyChangedEventManager.cs
- WebServiceMethodData.cs
- DefaultExpressionVisitor.cs
- XslUrlEditor.cs
- TimeSpanOrInfiniteValidator.cs
- UnitySerializationHolder.cs
- DesignerVerbToolStripMenuItem.cs
- OutArgument.cs
- InputLanguageManager.cs
- EmptyStringExpandableObjectConverter.cs
- HttpHandlerActionCollection.cs
- HttpServerUtilityWrapper.cs
- XPathSelectionIterator.cs
- PropertyConverter.cs
- View.cs
- ObservableCollection.cs
- ToolStripPanelDesigner.cs
- FileSystemInfo.cs
- SignatureToken.cs
- DrawingState.cs
- CompilerTypeWithParams.cs
- DocumentOrderQuery.cs
- PriorityQueue.cs
- FormDocumentDesigner.cs
- entityreference_tresulttype.cs
- DecoderExceptionFallback.cs
- Dictionary.cs
- AppSettingsExpressionBuilder.cs
- WSDualHttpSecurityElement.cs
- RawContentTypeMapper.cs
- PromptEventArgs.cs
- TreeNodeStyleCollection.cs
- DataControlFieldTypeEditor.cs
- HwndSubclass.cs
- CachingParameterInspector.cs
- Effect.cs
- loginstatus.cs
- RoamingStoreFile.cs
- Timer.cs
- XmlILIndex.cs
- ColorPalette.cs
- BindingsCollection.cs
- DesignerAutoFormatCollection.cs
- SafeRegistryHandle.cs
- Vector3DIndependentAnimationStorage.cs
- InvalidOleVariantTypeException.cs
- RegexMatchCollection.cs
- SecurityProtocolCorrelationState.cs
- TdsRecordBufferSetter.cs
- cookiecollection.cs
- PathFigureCollection.cs