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
- JsonFormatWriterGenerator.cs
- BackgroundFormatInfo.cs
- DBAsyncResult.cs
- UnmanagedBitmapWrapper.cs
- Filter.cs
- SynchronizationContext.cs
- DetailsViewRowCollection.cs
- StateRuntime.cs
- CodeParameterDeclarationExpression.cs
- EtwTrace.cs
- BrowserTree.cs
- HandleRef.cs
- MemoryPressure.cs
- RegistryPermission.cs
- BlockCollection.cs
- ConfigXmlElement.cs
- GlyphInfoList.cs
- FileIOPermission.cs
- DataList.cs
- SqlSupersetValidator.cs
- GetLedgerEntryForRecipientRequest.cs
- DependencyObject.cs
- uribuilder.cs
- RightsManagementEncryptedStream.cs
- RequestNavigateEventArgs.cs
- FieldNameLookup.cs
- DrawingImage.cs
- ListCollectionView.cs
- autovalidator.cs
- EDesignUtil.cs
- RankException.cs
- AttachedPropertyBrowsableAttribute.cs
- RadioButtonList.cs
- SimpleWebHandlerParser.cs
- NotSupportedException.cs
- OpCopier.cs
- XmlTextReaderImplHelpers.cs
- ConnectionsZoneAutoFormat.cs
- DataStreams.cs
- ComPlusDiagnosticTraceRecords.cs
- ScriptComponentDescriptor.cs
- Funcletizer.cs
- StorageMappingItemLoader.cs
- DataGridViewDataConnection.cs
- Point4D.cs
- RegionIterator.cs
- RequestQueue.cs
- DataGridViewRowEventArgs.cs
- ApplicationId.cs
- WebPartManagerDesigner.cs
- SchemaImporterExtensionElementCollection.cs
- NumberFormatInfo.cs
- smtpconnection.cs
- TextEvent.cs
- OpacityConverter.cs
- HwndSourceKeyboardInputSite.cs
- TableRow.cs
- HttpDictionary.cs
- ToolboxComponentsCreatedEventArgs.cs
- CompilationSection.cs
- BaseCodeDomTreeGenerator.cs
- WindowsTokenRoleProvider.cs
- IteratorFilter.cs
- AVElementHelper.cs
- KeysConverter.cs
- SiteMapNodeItemEventArgs.cs
- ColorIndependentAnimationStorage.cs
- MsmqReceiveParameters.cs
- MemberDomainMap.cs
- CorrelationRequestContext.cs
- FileLevelControlBuilderAttribute.cs
- SaveFileDialog.cs
- CategoryNameCollection.cs
- Calendar.cs
- NativeMethods.cs
- TableTextElementCollectionInternal.cs
- UITypeEditor.cs
- ViewPort3D.cs
- WindowInteropHelper.cs
- InternalResources.cs
- SystemUdpStatistics.cs
- ToolstripProfessionalRenderer.cs
- AttributeAction.cs
- clipboard.cs
- WindowCollection.cs
- UserControl.cs
- XamlInterfaces.cs
- FontUnit.cs
- XmlQueryCardinality.cs
- PluralizationServiceUtil.cs
- TabletDevice.cs
- ServicePointManager.cs
- PackWebRequest.cs
- EditorAttributeInfo.cs
- WizardSideBarListControlItemEventArgs.cs
- CqlLexer.cs
- CellNormalizer.cs
- TdsParameterSetter.cs
- bidPrivateBase.cs
- WebPageTraceListener.cs