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
- XamlLoadErrorInfo.cs
- SamlSecurityToken.cs
- GenericWebPart.cs
- HttpCacheVary.cs
- ActivitySurrogateSelector.cs
- NativeMethodsOther.cs
- SmiMetaData.cs
- DuplicateWaitObjectException.cs
- ResXResourceSet.cs
- IIS7UserPrincipal.cs
- StreamInfo.cs
- XmlArrayItemAttributes.cs
- AsyncStreamReader.cs
- WebSysDefaultValueAttribute.cs
- SimpleFieldTemplateFactory.cs
- Function.cs
- BrushMappingModeValidation.cs
- DispatcherExceptionEventArgs.cs
- HtmlEncodedRawTextWriter.cs
- GPRECTF.cs
- SplitterPanel.cs
- EventLogSession.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- ExecutionEngineException.cs
- WindowPatternIdentifiers.cs
- SplineKeyFrames.cs
- DataBoundLiteralControl.cs
- Control.cs
- OleDbPropertySetGuid.cs
- RuntimeEnvironment.cs
- PerformanceCounterPermissionEntry.cs
- CodeGenHelper.cs
- SerialPort.cs
- VisemeEventArgs.cs
- XmlObjectSerializerContext.cs
- CompositeCollection.cs
- BufferModeSettings.cs
- PersonalizationState.cs
- CodePageEncoding.cs
- TdsEnums.cs
- EventDescriptor.cs
- TreeNodeBinding.cs
- SiblingIterators.cs
- RectangleGeometry.cs
- CompositeKey.cs
- SqlClientWrapperSmiStream.cs
- NodeFunctions.cs
- CodePageEncoding.cs
- CompositeActivityTypeDescriptor.cs
- ListSurrogate.cs
- DispatchChannelSink.cs
- MarshalByRefObject.cs
- ButtonRenderer.cs
- ModelVisual3D.cs
- Activity.cs
- SchemaMapping.cs
- Brushes.cs
- TemplateBindingExpressionConverter.cs
- NotImplementedException.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- BoundPropertyEntry.cs
- SqlDataSourceEnumerator.cs
- XmlLinkedNode.cs
- BitmapInitialize.cs
- RegistryConfigurationProvider.cs
- CaseInsensitiveComparer.cs
- ExternalFile.cs
- ListBoxItem.cs
- CodePropertyReferenceExpression.cs
- AsyncCompletedEventArgs.cs
- Trigger.cs
- SchemaImporterExtensionElement.cs
- OdbcEnvironment.cs
- BaseAddressPrefixFilterElement.cs
- DragCompletedEventArgs.cs
- Win32SafeHandles.cs
- OpenTypeLayout.cs
- FileChangesMonitor.cs
- AspCompat.cs
- OpCellTreeNode.cs
- ResizeBehavior.cs
- MemberAssignmentAnalysis.cs
- XmlQueryRuntime.cs
- TextServicesCompartmentEventSink.cs
- ObjectTag.cs
- Viewport3DVisual.cs
- ObjectListField.cs
- GZipDecoder.cs
- DesignerTransactionCloseEvent.cs
- ColumnBinding.cs
- FrameworkContentElement.cs
- CounterSampleCalculator.cs
- ColorConverter.cs
- TargetControlTypeAttribute.cs
- UpdatePanelTrigger.cs
- MinimizableAttributeTypeConverter.cs
- ReferenceConverter.cs
- BuildResultCache.cs
- BufferModeSettings.cs
- XmlSchemaExporter.cs