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
- EditBehavior.cs
- LockedAssemblyCache.cs
- StrokeNodeOperations2.cs
- WindowPattern.cs
- UpDownEvent.cs
- DataColumnCollection.cs
- HwndSourceKeyboardInputSite.cs
- TemplateAction.cs
- List.cs
- tooltip.cs
- DataBoundLiteralControl.cs
- SearchForVirtualItemEventArgs.cs
- TextBreakpoint.cs
- DurableTimerExtension.cs
- WebRequestModuleElement.cs
- SecureUICommand.cs
- bidPrivateBase.cs
- DeclarativeExpressionConditionDeclaration.cs
- GridViewDeleteEventArgs.cs
- Interlocked.cs
- TemplateXamlTreeBuilder.cs
- XamlHttpHandlerFactory.cs
- MailWebEventProvider.cs
- ChildrenQuery.cs
- ClusterSafeNativeMethods.cs
- GridItemProviderWrapper.cs
- WindowsProgressbar.cs
- ConfigurationElementProperty.cs
- SqlDataSourceSelectingEventArgs.cs
- AttributeData.cs
- TypeSystem.cs
- SystemIPAddressInformation.cs
- PeerNameRegistration.cs
- RoleServiceManager.cs
- TabControlEvent.cs
- Parameter.cs
- SurrogateSelector.cs
- StandardTransformFactory.cs
- ResourceProviderFactory.cs
- WorkflowMarkupSerializationManager.cs
- FileLogRecordEnumerator.cs
- AuthorizationRule.cs
- DataKeyArray.cs
- TextTreeRootTextBlock.cs
- TemplateBaseAction.cs
- XmlSchemaAnyAttribute.cs
- HMACSHA512.cs
- TreeView.cs
- SafeSystemMetrics.cs
- ProcessHostMapPath.cs
- XmlIlVisitor.cs
- ContentPropertyAttribute.cs
- Typeface.cs
- DataGridViewRowEventArgs.cs
- DataSvcMapFile.cs
- ConvertEvent.cs
- SafeLocalMemHandle.cs
- UIElementIsland.cs
- ShapingEngine.cs
- ProjectionCamera.cs
- DBAsyncResult.cs
- TargetConverter.cs
- WebServiceAttribute.cs
- Console.cs
- DbExpressionVisitor.cs
- AutoCompleteStringCollection.cs
- CharStorage.cs
- PropertyDescriptorCollection.cs
- XmlNavigatorFilter.cs
- CounterCreationDataCollection.cs
- InheritanceContextChangedEventManager.cs
- ForwardPositionQuery.cs
- AnimationClock.cs
- Enum.cs
- UnmanagedMemoryStream.cs
- IDictionary.cs
- TableProviderWrapper.cs
- MatrixKeyFrameCollection.cs
- ContainerUIElement3D.cs
- ThousandthOfEmRealDoubles.cs
- ToolboxItemAttribute.cs
- RegionInfo.cs
- LinqDataSourceContextData.cs
- XmlFormatReaderGenerator.cs
- CellNormalizer.cs
- SafePEFileHandle.cs
- DesignTimeTemplateParser.cs
- OptionalMessageQuery.cs
- Floater.cs
- Propagator.JoinPropagator.cs
- ComponentFactoryHelpers.cs
- FunctionImportMapping.cs
- AppLevelCompilationSectionCache.cs
- TiffBitmapEncoder.cs
- StrokeRenderer.cs
- XamlTreeBuilder.cs
- QueryableDataSource.cs
- OpacityConverter.cs
- DBConcurrencyException.cs
- MergePropertyDescriptor.cs