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
- ConstructorArgumentAttribute.cs
- OuterGlowBitmapEffect.cs
- ExpressionServices.cs
- SQLByte.cs
- FrameDimension.cs
- SiteMapDataSource.cs
- TextFormatter.cs
- DataGridColumnCollection.cs
- SoapConverter.cs
- ConversionValidationRule.cs
- CodeTypeDeclarationCollection.cs
- XmlChildEnumerator.cs
- DataSpaceManager.cs
- RequestNavigateEventArgs.cs
- ErrorItem.cs
- RegularExpressionValidator.cs
- DefaultTextStoreTextComposition.cs
- DetailsViewDeleteEventArgs.cs
- FixedSOMContainer.cs
- WebConvert.cs
- DesignTimeXamlWriter.cs
- OleDbParameter.cs
- DateTimeFormat.cs
- Size3DValueSerializer.cs
- TableAdapterManagerGenerator.cs
- ListBoxItemAutomationPeer.cs
- TransferRequestHandler.cs
- DataGridViewComboBoxEditingControl.cs
- MatrixKeyFrameCollection.cs
- WorkflowQueuingService.cs
- Exceptions.cs
- ActivityWithResultConverter.cs
- ScriptReference.cs
- DesignerListAdapter.cs
- ISFClipboardData.cs
- CallbackValidatorAttribute.cs
- ClientSession.cs
- CounterSampleCalculator.cs
- LoadGrammarCompletedEventArgs.cs
- SmtpException.cs
- TickBar.cs
- DirectoryNotFoundException.cs
- ProfileInfo.cs
- GridViewCancelEditEventArgs.cs
- RepeatEnumerable.cs
- ExpressionBuilder.cs
- CodeExporter.cs
- DirectoryNotFoundException.cs
- x509utils.cs
- InertiaRotationBehavior.cs
- EasingFunctionBase.cs
- FragmentQuery.cs
- XmlRawWriter.cs
- Crc32.cs
- Style.cs
- SafeArrayRankMismatchException.cs
- ListViewGroupItemCollection.cs
- ServiceNameElementCollection.cs
- PathGeometry.cs
- PluralizationServiceUtil.cs
- ServerIdentity.cs
- C14NUtil.cs
- PropertySourceInfo.cs
- MenuItemStyle.cs
- MobileRedirect.cs
- FixedTextPointer.cs
- RegexCapture.cs
- PathSegmentCollection.cs
- BaseUriWithWildcard.cs
- ReflectionUtil.cs
- RadialGradientBrush.cs
- Math.cs
- ImageClickEventArgs.cs
- TablePattern.cs
- ControlAdapter.cs
- XPathDescendantIterator.cs
- LayoutSettings.cs
- XmlSchemaAnnotation.cs
- XmlnsPrefixAttribute.cs
- StyleCollection.cs
- StateDesigner.TransitionInfo.cs
- COM2ComponentEditor.cs
- CombinedGeometry.cs
- X509CertificateValidator.cs
- ObjectStateEntry.cs
- SimplePropertyEntry.cs
- NCryptSafeHandles.cs
- RuleSettings.cs
- ParseChildrenAsPropertiesAttribute.cs
- XmlSchemaSet.cs
- XmlSerializationWriter.cs
- HtmlInputReset.cs
- LinkedDataMemberFieldEditor.cs
- DrawingImage.cs
- OutputCacheSettingsSection.cs
- CoreSwitches.cs
- NativeStructs.cs
- XamlSerializer.cs
- PageParser.cs
- InheritanceAttribute.cs