Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / CompatibleComparer.cs / 1305376 / CompatibleComparer.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// [....]
//
using System.Diagnostics.Contracts;
namespace System.Collections {
[Serializable]
internal class CompatibleComparer: IEqualityComparer {
IComparer _comparer;
#pragma warning disable 618
IHashCodeProvider _hcp;
internal CompatibleComparer(IComparer comparer, IHashCodeProvider hashCodeProvider) {
_comparer = comparer;
_hcp = hashCodeProvider;
}
#pragma warning restore 618
public int Compare(Object a, Object b) {
if (a == b) return 0;
if (a == null) return -1;
if (b == null) return 1;
if (_comparer != null)
return _comparer.Compare(a,b);
IComparable ia = a as IComparable;
if (ia != null)
return ia.CompareTo(b);
throw new ArgumentException(Environment.GetResourceString("Argument_ImplementIComparable"));
}
public new bool Equals(Object a, Object b) {
return Compare(a, b) == 0;
}
public int GetHashCode(Object obj) {
if( obj == null) {
throw new ArgumentNullException("obj");
}
Contract.EndContractBlock();
if (_hcp != null)
return _hcp.GetHashCode(obj);
return obj.GetHashCode();
}
// These are helpers for the Hashtable to query the IKeyComparer infrastructure.
internal IComparer Comparer {
get {
return _comparer;
}
}
// These are helpers for the Hashtable to query the IKeyComparer infrastructure.
#pragma warning disable 618
internal IHashCodeProvider HashCodeProvider {
get {
return _hcp;
}
}
#pragma warning restore 618
}
}
// 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
- ReflectionServiceProvider.cs
- WsdlEndpointConversionContext.cs
- IList.cs
- SemanticResultKey.cs
- TransformCollection.cs
- ContentElement.cs
- Button.cs
- MarkedHighlightComponent.cs
- TextCharacters.cs
- ClearTypeHintValidation.cs
- ContourSegment.cs
- controlskin.cs
- TextureBrush.cs
- ImageAutomationPeer.cs
- ParameterReplacerVisitor.cs
- SqlCacheDependencyDatabase.cs
- DbConnectionPoolGroupProviderInfo.cs
- FontWeightConverter.cs
- PolyQuadraticBezierSegment.cs
- FixedPage.cs
- RelationshipFixer.cs
- OperationFormatUse.cs
- TagPrefixInfo.cs
- PenCursorManager.cs
- ReadOnlyAttribute.cs
- TrustLevel.cs
- StringConcat.cs
- TextBoxAutoCompleteSourceConverter.cs
- BinaryKeyIdentifierClause.cs
- SignatureHelper.cs
- NoPersistScope.cs
- ReadOnlyState.cs
- SessionParameter.cs
- ReaderWriterLock.cs
- ObjectDataSourceView.cs
- StoreConnection.cs
- XPathNodeHelper.cs
- XPathMessageFilter.cs
- TextLineBreak.cs
- Intellisense.cs
- IssuedTokenClientCredential.cs
- DataGridViewImageCell.cs
- SimpleMailWebEventProvider.cs
- BaseTemplateBuildProvider.cs
- ProviderCommandInfoUtils.cs
- SoapAttributeOverrides.cs
- RecordManager.cs
- TraceListeners.cs
- TextDpi.cs
- DbParameterCollectionHelper.cs
- CryptoKeySecurity.cs
- PageCodeDomTreeGenerator.cs
- UpdateManifestForBrowserApplication.cs
- UIElementPropertyUndoUnit.cs
- LocationSectionRecord.cs
- BuildProvider.cs
- BaseAppDomainProtocolHandler.cs
- DynamicDataRoute.cs
- BitmapFrameEncode.cs
- UIElement3DAutomationPeer.cs
- ButtonBaseAutomationPeer.cs
- BufferModesCollection.cs
- SemanticKeyElement.cs
- FlowDocumentPageViewerAutomationPeer.cs
- ProfilePropertySettings.cs
- WindowsFormsSynchronizationContext.cs
- DesignerActionItem.cs
- AppDomain.cs
- Figure.cs
- Graph.cs
- BitmapFrame.cs
- ObjectTokenCategory.cs
- GradientStopCollection.cs
- HttpFileCollection.cs
- BufferCache.cs
- CompilerScope.cs
- FrameworkContentElement.cs
- InterleavedZipPartStream.cs
- ServiceModelInstallComponent.cs
- MethodToken.cs
- X509CertificateInitiatorServiceCredential.cs
- TraceXPathNavigator.cs
- InteropExecutor.cs
- FontEditor.cs
- StreamAsIStream.cs
- ExpandSegmentCollection.cs
- VerticalAlignConverter.cs
- DebugInfoGenerator.cs
- SessionIDManager.cs
- XPathExpr.cs
- ImmutablePropertyDescriptorGridEntry.cs
- SoapEnvelopeProcessingElement.cs
- ChannelServices.cs
- VScrollProperties.cs
- InvalidOperationException.cs
- LinqExpressionNormalizer.cs
- VisualStyleTypesAndProperties.cs
- WebSysDefaultValueAttribute.cs
- EditorPart.cs
- AppDomainGrammarProxy.cs