Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- CodeSnippetStatement.cs
- WebPartZoneBase.cs
- DynamicDataRouteHandler.cs
- behaviorssection.cs
- SqlFunctions.cs
- XmlUnspecifiedAttribute.cs
- RulePatternOps.cs
- Errors.cs
- SecurityAttributeGenerationHelper.cs
- FormatterServices.cs
- ResourceDescriptionAttribute.cs
- DataGridViewCellLinkedList.cs
- AppDomainShutdownMonitor.cs
- StylusPointCollection.cs
- XsltInput.cs
- DesignerAttribute.cs
- TouchesOverProperty.cs
- XmlNodeWriter.cs
- XmlSchemaInclude.cs
- UIServiceHelper.cs
- BufferedGraphicsManager.cs
- CqlWriter.cs
- SoapInteropTypes.cs
- storepermission.cs
- BrushMappingModeValidation.cs
- Variable.cs
- SmtpTransport.cs
- OracleConnectionStringBuilder.cs
- AsyncOperationLifetimeManager.cs
- CompModSwitches.cs
- WebPartMinimizeVerb.cs
- XmlSchemaValidator.cs
- TreeBuilderBamlTranslator.cs
- SymbolMethod.cs
- WindowsSecurityTokenAuthenticator.cs
- AxHost.cs
- DoubleAnimationClockResource.cs
- MemberRestriction.cs
- SecurityVerifiedMessage.cs
- PropertyToken.cs
- Cloud.cs
- XmlNodeChangedEventArgs.cs
- KeyValueSerializer.cs
- ProcessHostFactoryHelper.cs
- SupportingTokenBindingElement.cs
- KeyValuePair.cs
- OptimalTextSource.cs
- EntityClientCacheEntry.cs
- ControlPropertyNameConverter.cs
- MessageBox.cs
- ObjectTag.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- BindingExpressionBase.cs
- safelinkcollection.cs
- PointF.cs
- Matrix.cs
- StaticFileHandler.cs
- ChannelManagerService.cs
- Validator.cs
- filewebrequest.cs
- TextRenderer.cs
- ColumnHeaderConverter.cs
- ReadContentAsBinaryHelper.cs
- XmlSchemaComplexContent.cs
- PeerNameRecord.cs
- SRDisplayNameAttribute.cs
- AssociationSetMetadata.cs
- DocumentSequence.cs
- ThousandthOfEmRealDoubles.cs
- LayoutEvent.cs
- MsmqIntegrationProcessProtocolHandler.cs
- TimeSpanValidator.cs
- TreeIterators.cs
- ActivityStatusChangeEventArgs.cs
- odbcmetadatafactory.cs
- EntityAdapter.cs
- CustomSignedXml.cs
- CommandCollectionEditor.cs
- SortQueryOperator.cs
- FrameworkElementAutomationPeer.cs
- SessionStateContainer.cs
- FileDetails.cs
- SmiEventSink_DeferedProcessing.cs
- ColorContextHelper.cs
- ContentFilePart.cs
- BehaviorEditorPart.cs
- BitmapData.cs
- MetadataArtifactLoader.cs
- ComplexObject.cs
- DateTimeFormatInfo.cs
- HtmlTextArea.cs
- ClientBuildManager.cs
- XD.cs
- ByteBufferPool.cs
- _ConnectionGroup.cs
- CounterCreationData.cs
- HandledMouseEvent.cs
- MapPathBasedVirtualPathProvider.cs
- UniqueIdentifierService.cs
- Publisher.cs