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
/// property.
///
private CdpEqualityComparer()
{
}
private static readonly IEqualityComparer s_defaultEqualityComparer = new CdpEqualityComparer();
///
/// 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
/// property.
///
private CdpEqualityComparer()
{
}
private static readonly IEqualityComparer s_defaultEqualityComparer = new CdpEqualityComparer();
///
/// 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
- XmlDeclaration.cs
- DbMetaDataCollectionNames.cs
- RepeatBehaviorConverter.cs
- Psha1DerivedKeyGenerator.cs
- GeneralTransform3DTo2DTo3D.cs
- SmiContext.cs
- StagingAreaInputItem.cs
- NameValueConfigurationCollection.cs
- WebReferencesBuildProvider.cs
- LazyTextWriterCreator.cs
- DllNotFoundException.cs
- XmlResolver.cs
- AuthenticationService.cs
- TableColumnCollectionInternal.cs
- BuildManagerHost.cs
- XsdCachingReader.cs
- UInt64Converter.cs
- ControlIdConverter.cs
- SqlDataSourceQueryEditor.cs
- WebPartConnectionsDisconnectVerb.cs
- MsmqTransportSecurityElement.cs
- ColorMatrix.cs
- IPCCacheManager.cs
- XmlAnyElementAttribute.cs
- ScriptDescriptor.cs
- FocusWithinProperty.cs
- SystemIPv4InterfaceProperties.cs
- EntityDataSourceColumn.cs
- EmissiveMaterial.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- Exceptions.cs
- CommonRemoteMemoryBlock.cs
- XmlDocumentFragment.cs
- DesignerVerbToolStripMenuItem.cs
- PropertyNames.cs
- UnhandledExceptionEventArgs.cs
- SafeCertificateContext.cs
- DbConnectionPoolGroup.cs
- FixedSOMContainer.cs
- SystemIcons.cs
- TypedTableBaseExtensions.cs
- LicenseContext.cs
- Operators.cs
- WebBrowser.cs
- CommandDevice.cs
- UnsettableComboBox.cs
- HTTPRemotingHandler.cs
- DateTimeConstantAttribute.cs
- SmtpSection.cs
- SqlCacheDependencySection.cs
- WebPartEditorApplyVerb.cs
- SuppressMessageAttribute.cs
- GridLength.cs
- ToolStripScrollButton.cs
- UrlMappingCollection.cs
- WindowsSecurityTokenAuthenticator.cs
- TextServicesDisplayAttribute.cs
- TextViewBase.cs
- _NegoStream.cs
- SafeSecurityHandles.cs
- ReadWriteSpinLock.cs
- HiddenFieldPageStatePersister.cs
- DropShadowBitmapEffect.cs
- MouseActionValueSerializer.cs
- DesignTable.cs
- ToolstripProfessionalRenderer.cs
- Helper.cs
- InputManager.cs
- SqlCommand.cs
- ContextProperty.cs
- CurrencyWrapper.cs
- Button.cs
- DeferredReference.cs
- WorkflowOperationContext.cs
- TraceLevelStore.cs
- ResetableIterator.cs
- Query.cs
- WSSecurityJan2004.cs
- TablePattern.cs
- RoutingBehavior.cs
- DbProviderConfigurationHandler.cs
- ColorAnimation.cs
- ClientUrlResolverWrapper.cs
- MachineKey.cs
- RecordsAffectedEventArgs.cs
- CompositeFontFamily.cs
- Converter.cs
- WebHttpSecurity.cs
- SystemGatewayIPAddressInformation.cs
- Main.cs
- SessionEndingEventArgs.cs
- wgx_render.cs
- Identity.cs
- TextTreeText.cs
- XmlCustomFormatter.cs
- Point4DValueSerializer.cs
- PlainXmlDeserializer.cs
- ExtensionQuery.cs
- StylusPointCollection.cs
- Psha1DerivedKeyGenerator.cs