Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Collections / Generic / HashSetEqualityComparer.cs / 1305376 / HashSetEqualityComparer.cs
using System; using System.Collections; using System.Collections.Generic; namespace System.Collections.Generic { ////// Equality comparer for hashsets of hashsets /// ///[Serializable()] internal class HashSetEqualityComparer : IEqualityComparer > { private IEqualityComparer m_comparer; public HashSetEqualityComparer() { m_comparer = EqualityComparer .Default; } public HashSetEqualityComparer(IEqualityComparer comparer) { if (comparer == null) { m_comparer = EqualityComparer .Default; } else { m_comparer = comparer; } } // using m_comparer to keep equals properties in tact; don't want to choose one of the comparers public bool Equals(HashSet x, HashSet y) { return HashSet .HashSetEquals(x, y, m_comparer); } public int GetHashCode(HashSet obj) { int hashCode = 0; if (obj != null) { foreach (T t in obj) { hashCode = hashCode ^ (m_comparer.GetHashCode(t) & 0x7FFFFFFF); } } // else returns hashcode of 0 for null hashsets return hashCode; } // Equals method for the comparer itself. public override bool Equals(Object obj){ HashSetEqualityComparer comparer = obj as HashSetEqualityComparer ; if (comparer == null) { return false; } return (this.m_comparer == comparer.m_comparer); } public override int GetHashCode() { return m_comparer.GetHashCode(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListComponentEditor.cs
- DiscoveryDocumentReference.cs
- ComAdminInterfaces.cs
- ManagementBaseObject.cs
- Rijndael.cs
- ResourceProviderFactory.cs
- UpdateExpressionVisitor.cs
- CreateUserErrorEventArgs.cs
- DesignerValidationSummaryAdapter.cs
- SizeChangedEventArgs.cs
- PointHitTestParameters.cs
- ConfigXmlSignificantWhitespace.cs
- BufferedReadStream.cs
- TrustLevelCollection.cs
- XmlUtilWriter.cs
- TypeConverterAttribute.cs
- DataControlField.cs
- Location.cs
- LongCountAggregationOperator.cs
- SynchronizedRandom.cs
- ClientRuntimeConfig.cs
- AssemblyCollection.cs
- UnsafeCollabNativeMethods.cs
- SymbolPair.cs
- ButtonBase.cs
- GridViewItemAutomationPeer.cs
- DataGridViewColumnConverter.cs
- AttributeUsageAttribute.cs
- BuildProviderCollection.cs
- TextRunProperties.cs
- BamlLocalizabilityResolver.cs
- UInt64Storage.cs
- DuplexClientBase.cs
- HttpBrowserCapabilitiesWrapper.cs
- StringArrayEditor.cs
- InputQueue.cs
- WbemProvider.cs
- Atom10FormatterFactory.cs
- HitTestFilterBehavior.cs
- TextProperties.cs
- EntityDesignerDataSourceView.cs
- PackagePart.cs
- TransactionScope.cs
- ChannelEndpointElement.cs
- TagMapInfo.cs
- BitmapSourceSafeMILHandle.cs
- DependencyPropertyValueSerializer.cs
- ExtenderControl.cs
- ContainerControl.cs
- SequenceDesignerAccessibleObject.cs
- LinkedResourceCollection.cs
- ImagingCache.cs
- EmptyCollection.cs
- SynchronizedInputHelper.cs
- CachedBitmap.cs
- XpsResource.cs
- ToolStripStatusLabel.cs
- TabRenderer.cs
- DataGridRowsPresenter.cs
- CategoryNameCollection.cs
- infer.cs
- PreviewPageInfo.cs
- StrokeCollection.cs
- ReadWriteObjectLock.cs
- StatusBar.cs
- PhysicalFontFamily.cs
- TerminateDesigner.cs
- PasswordPropertyTextAttribute.cs
- SecurityKeyUsage.cs
- HostSecurityManager.cs
- HashMembershipCondition.cs
- UnknownBitmapEncoder.cs
- HeaderedContentControl.cs
- AssemblyFilter.cs
- FontFamily.cs
- TableRowCollection.cs
- FixedFlowMap.cs
- XmlHelper.cs
- DataFormats.cs
- ProbeDuplexAsyncResult.cs
- odbcmetadatacolumnnames.cs
- ConfigurationValue.cs
- NamespaceExpr.cs
- SrgsGrammarCompiler.cs
- MergablePropertyAttribute.cs
- RegisteredDisposeScript.cs
- BridgeDataReader.cs
- ClonableStack.cs
- MessageSecurityTokenVersion.cs
- Attachment.cs
- SerializeAbsoluteContext.cs
- EntityDesignerBuildProvider.cs
- AssociationSet.cs
- UnsafeNativeMethods.cs
- InputReport.cs
- UnionCodeGroup.cs
- Rotation3DAnimation.cs
- ThemeInfoAttribute.cs
- Converter.cs
- storepermission.cs