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
- QilDataSource.cs
- CompositeKey.cs
- InstanceKeyView.cs
- XmlDataLoader.cs
- StringPropertyBuilder.cs
- ObjectSecurity.cs
- CombinedGeometry.cs
- EntityDesignerBuildProvider.cs
- TextBoxView.cs
- cookiecontainer.cs
- PenThreadPool.cs
- ListSortDescription.cs
- QueueProcessor.cs
- Animatable.cs
- ServiceHttpHandlerFactory.cs
- QueryOperator.cs
- MemberAccessException.cs
- OdbcInfoMessageEvent.cs
- SecureStringHasher.cs
- EdgeModeValidation.cs
- CollectionChange.cs
- TreeViewImageKeyConverter.cs
- ToolStripTemplateNode.cs
- TagNameToTypeMapper.cs
- HtmlInputText.cs
- Repeater.cs
- ColumnClickEvent.cs
- Ray3DHitTestResult.cs
- DataObjectCopyingEventArgs.cs
- DecoderExceptionFallback.cs
- JsonWriter.cs
- EdmProperty.cs
- ExtenderProvidedPropertyAttribute.cs
- ServiceElementCollection.cs
- Relationship.cs
- WindowsStatusBar.cs
- ParentQuery.cs
- ClientTargetSection.cs
- XmlQueryRuntime.cs
- WeakReferenceKey.cs
- InitializingNewItemEventArgs.cs
- RealizationDrawingContextWalker.cs
- CodeCommentStatementCollection.cs
- DynamicPropertyHolder.cs
- TransformProviderWrapper.cs
- FontCacheUtil.cs
- TypeConverter.cs
- TableStyle.cs
- ComplusEndpointConfigContainer.cs
- ZeroOpNode.cs
- ProxyWebPartManager.cs
- BufferedGraphicsContext.cs
- CornerRadius.cs
- MDIControlStrip.cs
- BitmapCodecInfoInternal.cs
- ConstructorBuilder.cs
- XpsFilter.cs
- StdRegProviderWrapper.cs
- ContextMenuStripGroupCollection.cs
- DbMetaDataCollectionNames.cs
- VarInfo.cs
- RectangleGeometry.cs
- SmtpFailedRecipientsException.cs
- PropertyInfoSet.cs
- ComponentCollection.cs
- DbParameterHelper.cs
- SimpleTypeResolver.cs
- RootBrowserWindow.cs
- FontStretchConverter.cs
- StaticTextPointer.cs
- GridViewCommandEventArgs.cs
- EnumConverter.cs
- SamlEvidence.cs
- InlinedAggregationOperatorEnumerator.cs
- HealthMonitoringSectionHelper.cs
- SizeChangedEventArgs.cs
- RedistVersionInfo.cs
- DataContractSet.cs
- ObjectItemCachedAssemblyLoader.cs
- Misc.cs
- AlphabetConverter.cs
- GridItemCollection.cs
- ParentQuery.cs
- BCryptNative.cs
- MulticastNotSupportedException.cs
- FirstMatchCodeGroup.cs
- ForeignKeyConstraint.cs
- ToolStripItem.cs
- ConsoleKeyInfo.cs
- RuntimeUtils.cs
- XmlCharCheckingWriter.cs
- DataViewSettingCollection.cs
- RotationValidation.cs
- DnsEndpointIdentity.cs
- EntityContainerEmitter.cs
- EventSetter.cs
- CodeCastExpression.cs
- XmlSchemaCompilationSettings.cs
- ControlIdConverter.cs
- DbXmlEnabledProviderManifest.cs