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
- TextParaClient.cs
- AlignmentYValidation.cs
- PatternMatcher.cs
- ObjectSecurity.cs
- GenericTypeParameterBuilder.cs
- SafeCoTaskMem.cs
- ApplicationDirectory.cs
- MLangCodePageEncoding.cs
- ILGen.cs
- XmlBoundElement.cs
- ChineseLunisolarCalendar.cs
- FileNotFoundException.cs
- Native.cs
- CacheDependency.cs
- CompressedStack.cs
- CodeBinaryOperatorExpression.cs
- CellQuery.cs
- DefaultAsyncDataDispatcher.cs
- CapabilitiesPattern.cs
- WebRequestModulesSection.cs
- WebServiceClientProxyGenerator.cs
- WSHttpBindingBase.cs
- TextMetrics.cs
- JsonUriDataContract.cs
- OleDbDataAdapter.cs
- SecurityException.cs
- PinnedBufferMemoryStream.cs
- StructuredTypeEmitter.cs
- ContractTypeNameElement.cs
- CmsInterop.cs
- CompilerParameters.cs
- UniqueSet.cs
- SiteMapPath.cs
- PolicyException.cs
- GradientSpreadMethodValidation.cs
- InvalidDocumentContentsException.cs
- GridViewSortEventArgs.cs
- TextEncodedRawTextWriter.cs
- compensatingcollection.cs
- MimeTypeMapper.cs
- WeakHashtable.cs
- ConsoleKeyInfo.cs
- FormsAuthenticationModule.cs
- DependencyPropertyConverter.cs
- ProfileParameter.cs
- SharedUtils.cs
- xmlglyphRunInfo.cs
- MethodCallExpression.cs
- BidirectionalDictionary.cs
- RestHandler.cs
- XamlTemplateSerializer.cs
- XmlMtomReader.cs
- AttachInfo.cs
- CqlIdentifiers.cs
- ScriptIgnoreAttribute.cs
- RequestQueryParser.cs
- HtmlFormParameterReader.cs
- RegexWriter.cs
- TextEffect.cs
- TrackingStringDictionary.cs
- CapabilitiesPattern.cs
- Root.cs
- AsyncCallback.cs
- PrintPreviewControl.cs
- ISO2022Encoding.cs
- ExplicitDiscriminatorMap.cs
- Soap.cs
- PassportAuthentication.cs
- SrgsElementFactory.cs
- ThreadStartException.cs
- ConfigurationElement.cs
- DynamicResourceExtension.cs
- UpdateExpressionVisitor.cs
- DockPattern.cs
- ConfigXmlSignificantWhitespace.cs
- SpeakInfo.cs
- RefType.cs
- ReflectTypeDescriptionProvider.cs
- ManagementClass.cs
- FormattedTextSymbols.cs
- MouseOverProperty.cs
- ThicknessAnimationUsingKeyFrames.cs
- QuaternionRotation3D.cs
- Executor.cs
- SessionIDManager.cs
- PrintDialog.cs
- NetworkAddressChange.cs
- BamlResourceDeserializer.cs
- CompositeActivityTypeDescriptor.cs
- ElementHostAutomationPeer.cs
- VirtualPath.cs
- DesignerLoader.cs
- XmlAttributeOverrides.cs
- XmlSchemaComplexContentExtension.cs
- UIElementParagraph.cs
- ResourceReferenceExpression.cs
- TimelineGroup.cs
- _FixedSizeReader.cs
- CodeValidator.cs
- _Win32.cs