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
- TableLayoutSettings.cs
- Queue.cs
- CellParagraph.cs
- DataBinder.cs
- mansign.cs
- ImportRequest.cs
- CompositeCollection.cs
- CodeThrowExceptionStatement.cs
- ReflectEventDescriptor.cs
- NavigationPropertyEmitter.cs
- EventQueueState.cs
- EpmSourceTree.cs
- SkipQueryOptionExpression.cs
- XPathNodePointer.cs
- OdbcUtils.cs
- CharStorage.cs
- ControlEvent.cs
- SaveFileDialogDesigner.cs
- ToolStripItemClickedEventArgs.cs
- DataGridViewSortCompareEventArgs.cs
- DeviceContext.cs
- ToolStripMenuItemDesigner.cs
- ApplicationFileParser.cs
- OperationCanceledException.cs
- ByteStack.cs
- GroupBoxRenderer.cs
- AlternateView.cs
- SqlHelper.cs
- ListenerServiceInstallComponent.cs
- WindowExtensionMethods.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- RowSpanVector.cs
- ContractHandle.cs
- IDQuery.cs
- CompilerCollection.cs
- DictationGrammar.cs
- ListViewItem.cs
- TypeInformation.cs
- CustomDictionarySources.cs
- DesignerProperties.cs
- PerformanceCounterCategory.cs
- TrustSection.cs
- Header.cs
- Sequence.cs
- XmlAnyElementAttribute.cs
- BuildProviderAppliesToAttribute.cs
- XmlSchemaProviderAttribute.cs
- IndentedWriter.cs
- ImageField.cs
- DataTemplate.cs
- HexParser.cs
- EventRoute.cs
- EventsTab.cs
- XmlChildNodes.cs
- DBSqlParserColumnCollection.cs
- StyleXamlTreeBuilder.cs
- MemberRelationshipService.cs
- EncoderExceptionFallback.cs
- ImageAnimator.cs
- DesignerTransactionCloseEvent.cs
- RoutingSection.cs
- ImageMapEventArgs.cs
- IOThreadScheduler.cs
- NavigationHelper.cs
- DbgUtil.cs
- ExpandCollapsePattern.cs
- TransactionContextManager.cs
- HandlerBase.cs
- RemotingConfiguration.cs
- DataTable.cs
- ScalarConstant.cs
- HtmlInputReset.cs
- DockEditor.cs
- ContainerUIElement3D.cs
- HtmlInputImage.cs
- SlotInfo.cs
- SecurityTokenParameters.cs
- OdbcConnection.cs
- DataGridTablesFactory.cs
- CheckedPointers.cs
- PanelDesigner.cs
- JpegBitmapDecoder.cs
- ClientBuildManager.cs
- ManagedFilter.cs
- BaseTreeIterator.cs
- SingleObjectCollection.cs
- CodeArgumentReferenceExpression.cs
- EventPropertyMap.cs
- ImageBrush.cs
- InlineObject.cs
- XsltLibrary.cs
- SerializationInfo.cs
- versioninfo.cs
- ConfigXmlDocument.cs
- PageParserFilter.cs
- BaseEntityWrapper.cs
- TemplateBindingExtension.cs
- ScrollEvent.cs
- DataGridViewColumnCollectionEditor.cs
- X509Certificate2Collection.cs