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
- Int32.cs
- ObservableDictionary.cs
- PropVariant.cs
- XmlSchemaValidator.cs
- wmiprovider.cs
- SafeEventHandle.cs
- SplitterPanelDesigner.cs
- OleDbRowUpdatingEvent.cs
- RoleManagerModule.cs
- InvalidMessageContractException.cs
- CounterNameConverter.cs
- IBuiltInEvidence.cs
- ContextBase.cs
- OpCodes.cs
- XslNumber.cs
- StringArrayConverter.cs
- DbDataAdapter.cs
- PeerNameRegistration.cs
- GridView.cs
- BitmapEffectDrawingContent.cs
- ColumnHeaderConverter.cs
- XmlAttributeOverrides.cs
- SerializableAttribute.cs
- AccessText.cs
- X509UI.cs
- DecimalAnimationUsingKeyFrames.cs
- PerformanceCounterCategory.cs
- LayeredChannelFactory.cs
- RemoteTokenFactory.cs
- Int16KeyFrameCollection.cs
- DbQueryCommandTree.cs
- FamilyTypeface.cs
- Propagator.cs
- EncodingDataItem.cs
- SafeIUnknown.cs
- Span.cs
- DoubleStorage.cs
- ComboBox.cs
- XamlTreeBuilderBamlRecordWriter.cs
- LockCookie.cs
- SrgsSemanticInterpretationTag.cs
- ToolStripInSituService.cs
- GridSplitterAutomationPeer.cs
- ResolveNameEventArgs.cs
- AlternateViewCollection.cs
- CodeObjectCreateExpression.cs
- SerializationSectionGroup.cs
- TransformConverter.cs
- _SslState.cs
- ColumnMapProcessor.cs
- SystemNetHelpers.cs
- MetadataSerializer.cs
- MissingMemberException.cs
- BindingSource.cs
- ContainsSearchOperator.cs
- TraceContextRecord.cs
- FormsAuthenticationUserCollection.cs
- SchemaManager.cs
- HttpAsyncResult.cs
- BindingGroup.cs
- AmbientValueAttribute.cs
- OdbcDataReader.cs
- Stack.cs
- OutputCacheSettings.cs
- MulticastNotSupportedException.cs
- SimpleModelProvider.cs
- XmlAutoDetectWriter.cs
- CompilerResults.cs
- MILUtilities.cs
- VisualStyleRenderer.cs
- DependencyPropertyChangedEventArgs.cs
- RequestCachePolicyConverter.cs
- base64Transforms.cs
- RegexCompilationInfo.cs
- OpCodes.cs
- FileLogRecord.cs
- KoreanLunisolarCalendar.cs
- Optimizer.cs
- Console.cs
- AnnotationObservableCollection.cs
- FileDialogCustomPlace.cs
- RC2CryptoServiceProvider.cs
- SizeConverter.cs
- PathFigureCollection.cs
- PeerCollaborationPermission.cs
- HelpOperationInvoker.cs
- Quaternion.cs
- DateTimePicker.cs
- DiscoveryDocumentLinksPattern.cs
- DateTimeOffsetStorage.cs
- UniqueConstraint.cs
- JsonMessageEncoderFactory.cs
- TextPatternIdentifiers.cs
- StorageAssociationSetMapping.cs
- Int16.cs
- TimeoutHelper.cs
- ServicePrincipalNameElement.cs
- OleDbReferenceCollection.cs
- XPathQilFactory.cs
- _Rfc2616CacheValidators.cs