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
- ObjectHandle.cs
- ActivityExecutorOperation.cs
- TypePropertyEditor.cs
- safex509handles.cs
- FixedHighlight.cs
- TextContainerChangedEventArgs.cs
- MessageHeaders.cs
- Rect3D.cs
- XmlDataSourceView.cs
- Freezable.cs
- PermissionSetTriple.cs
- SelectorItemAutomationPeer.cs
- WaitHandleCannotBeOpenedException.cs
- HTMLTextWriter.cs
- Queue.cs
- initElementDictionary.cs
- ObjectQuery.cs
- OdbcFactory.cs
- TrackingMemoryStream.cs
- XmlWriterSettings.cs
- HtmlControlPersistable.cs
- ColorAnimation.cs
- PasswordTextNavigator.cs
- DLinqColumnProvider.cs
- ACL.cs
- Color.cs
- GuidelineSet.cs
- CreateParams.cs
- UnknownBitmapDecoder.cs
- ToolTip.cs
- NonVisualControlAttribute.cs
- ServiceParser.cs
- PointValueSerializer.cs
- WindowPatternIdentifiers.cs
- WebRequestModuleElementCollection.cs
- PassportPrincipal.cs
- DynamicValueConverter.cs
- keycontainerpermission.cs
- ScrollItemPattern.cs
- ApplicationSecurityManager.cs
- UncommonField.cs
- CodeIndexerExpression.cs
- DelegateSerializationHolder.cs
- ResourceDefaultValueAttribute.cs
- HtmlEmptyTagControlBuilder.cs
- ToolTipAutomationPeer.cs
- ImageField.cs
- HtmlFormWrapper.cs
- SoapMessage.cs
- UpdateException.cs
- WinFormsComponentEditor.cs
- AttributeEmitter.cs
- IdleTimeoutMonitor.cs
- TemplateColumn.cs
- TextCompositionManager.cs
- TextAction.cs
- SamlAuthorityBinding.cs
- Set.cs
- ParsedAttributeCollection.cs
- ListViewCommandEventArgs.cs
- HttpListenerContext.cs
- SettingsSection.cs
- Pool.cs
- CreateUserWizardStep.cs
- SafeNativeMethods.cs
- LocalizationParserHooks.cs
- HtmlHistory.cs
- ToolboxDataAttribute.cs
- BindingContext.cs
- Type.cs
- RegionData.cs
- CultureInfoConverter.cs
- GatewayDefinition.cs
- Help.cs
- CustomCategoryAttribute.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- UIElement.cs
- ToolStripRendererSwitcher.cs
- Propagator.ExtentPlaceholderCreator.cs
- Hashtable.cs
- PointLightBase.cs
- EmptyStringExpandableObjectConverter.cs
- DataSourceDesigner.cs
- AdornerPresentationContext.cs
- BoundsDrawingContextWalker.cs
- SQLInt32.cs
- LayoutEvent.cs
- DrawListViewItemEventArgs.cs
- ExeConfigurationFileMap.cs
- ListItem.cs
- ServiceObjectContainer.cs
- SettingsSection.cs
- Win32.cs
- XXXOnTypeBuilderInstantiation.cs
- TemplateNameScope.cs
- VectorAnimationUsingKeyFrames.cs
- ColorMap.cs
- SqlGatherProducedAliases.cs
- AstTree.cs
- DataGridViewCellLinkedList.cs