Code:
/ 4.0 / 4.0 / 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. 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
- SeparatorAutomationPeer.cs
- MediaTimeline.cs
- InfoCardSchemas.cs
- NetworkInformationPermission.cs
- Publisher.cs
- SeverityFilter.cs
- CompositeScriptReference.cs
- ScaleTransform.cs
- XPathNodeList.cs
- CodeTypeReference.cs
- GridViewCommandEventArgs.cs
- Bits.cs
- TextChange.cs
- HwndTarget.cs
- ContainerSelectorGlyph.cs
- Filter.cs
- VirtualizingStackPanel.cs
- StringAttributeCollection.cs
- httpserverutility.cs
- OptionalRstParameters.cs
- HttpRuntime.cs
- AlphabetConverter.cs
- SerializationStore.cs
- NamespaceInfo.cs
- InitializationEventAttribute.cs
- ListControlConvertEventArgs.cs
- UpWmlMobileTextWriter.cs
- PropertyChangedEventManager.cs
- CompoundFileStorageReference.cs
- PrintPreviewGraphics.cs
- FileInfo.cs
- WindowsListViewGroup.cs
- Point4DConverter.cs
- UpdateDelegates.Generated.cs
- StreamReader.cs
- DataGridPageChangedEventArgs.cs
- ISAPIRuntime.cs
- NamespaceEmitter.cs
- SoapFault.cs
- SymbolPair.cs
- FileAuthorizationModule.cs
- codemethodreferenceexpression.cs
- ConfigurationValidatorAttribute.cs
- ToolCreatedEventArgs.cs
- TdsValueSetter.cs
- DataTemplateSelector.cs
- HashCryptoHandle.cs
- BlockUIContainer.cs
- DataSourceControl.cs
- OutputCacheSection.cs
- PrintEvent.cs
- PowerStatus.cs
- FullTrustAssembliesSection.cs
- SecureEnvironment.cs
- DefaultParameterValueAttribute.cs
- ContextMenu.cs
- DataGridItem.cs
- MediaTimeline.cs
- InputMethodStateTypeInfo.cs
- smtpconnection.cs
- ParsedRoute.cs
- COM2ExtendedBrowsingHandler.cs
- CngProperty.cs
- RoleGroup.cs
- EntityDataSourceSelectingEventArgs.cs
- TextServicesCompartmentEventSink.cs
- SecurityException.cs
- _SslState.cs
- ApplicationContext.cs
- AdRotator.cs
- GridViewSelectEventArgs.cs
- Geometry3D.cs
- XmlAnyAttributeAttribute.cs
- DeploymentSectionCache.cs
- ContextDataSourceView.cs
- TableDetailsCollection.cs
- TextRenderer.cs
- VisualBasicSettingsHandler.cs
- CryptoConfig.cs
- DataSetMappper.cs
- GcHandle.cs
- NotCondition.cs
- TileBrush.cs
- WindowPattern.cs
- JavaScriptString.cs
- CatalogZone.cs
- VideoDrawing.cs
- WrapperEqualityComparer.cs
- HitTestResult.cs
- VerticalAlignConverter.cs
- VoiceObjectToken.cs
- CodeDOMUtility.cs
- ErrorHandlerModule.cs
- ResponseBodyWriter.cs
- basenumberconverter.cs
- TcpSocketManager.cs
- AutomationTextAttribute.cs
- PerformanceCounterManager.cs
- AttributeUsageAttribute.cs
- Cursor.cs