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
- Globals.cs
- ModelFunction.cs
- NavigatingCancelEventArgs.cs
- StorageSetMapping.cs
- ApplicationProxyInternal.cs
- Shape.cs
- TransactionInterop.cs
- BitmapEffect.cs
- ImageIndexConverter.cs
- DLinqDataModelProvider.cs
- DispatchRuntime.cs
- MenuCommand.cs
- FormViewCommandEventArgs.cs
- TimeSpanMinutesConverter.cs
- DbConnectionInternal.cs
- PrtCap_Public_Simple.cs
- PanelStyle.cs
- InputLangChangeRequestEvent.cs
- CodeTypeMemberCollection.cs
- HtmlTableRow.cs
- SqlTypeConverter.cs
- HttpWriter.cs
- TableCellAutomationPeer.cs
- ConfigurationStrings.cs
- GcSettings.cs
- TrackingSection.cs
- FigureHelper.cs
- TemplateXamlTreeBuilder.cs
- SqlDataSourceCommandParser.cs
- ResourceReader.cs
- TextTreeTextElementNode.cs
- DesignerLoader.cs
- PriorityItem.cs
- XmlArrayAttribute.cs
- DataServiceProcessingPipeline.cs
- ContractReference.cs
- HwndAppCommandInputProvider.cs
- ProtocolsConfigurationHandler.cs
- EntityStoreSchemaFilterEntry.cs
- QueryCacheKey.cs
- DragEvent.cs
- CounterSample.cs
- AsnEncodedData.cs
- InternalPermissions.cs
- ItemCheckedEvent.cs
- MenuEventArgs.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- EventLogPermissionAttribute.cs
- EDesignUtil.cs
- TextEffect.cs
- CodeDomConfigurationHandler.cs
- ConfigurationValues.cs
- EventToken.cs
- SamlAdvice.cs
- Rect3DValueSerializer.cs
- SqlDataSourceEnumerator.cs
- ListControlBoundActionList.cs
- DispatcherProcessingDisabled.cs
- ImageFormatConverter.cs
- DataGridViewDataConnection.cs
- SendingRequestEventArgs.cs
- XmlArrayItemAttribute.cs
- Assembly.cs
- EncryptedKey.cs
- RightNameExpirationInfoPair.cs
- DynamicFilterExpression.cs
- ExitEventArgs.cs
- CodeSubDirectory.cs
- AffineTransform3D.cs
- PrimitiveCodeDomSerializer.cs
- ApplySecurityAndSendAsyncResult.cs
- TaiwanCalendar.cs
- Binding.cs
- BamlCollectionHolder.cs
- CharEnumerator.cs
- FieldTemplateFactory.cs
- HtmlTernaryTree.cs
- SizeKeyFrameCollection.cs
- TabControl.cs
- ListenDesigner.cs
- JsonDeserializer.cs
- ScriptRegistrationManager.cs
- ResolveMatchesMessage11.cs
- Command.cs
- StylusEventArgs.cs
- PreviewControlDesigner.cs
- LinqDataSourceUpdateEventArgs.cs
- AttachedAnnotation.cs
- ISessionStateStore.cs
- ListViewItem.cs
- WithStatement.cs
- Help.cs
- StateBag.cs
- ObjectRef.cs
- InsufficientMemoryException.cs
- AppearanceEditorPart.cs
- PngBitmapEncoder.cs
- PreloadedPackages.cs
- GridLengthConverter.cs
- PingReply.cs