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
- HttpProtocolReflector.cs
- LocalizableAttribute.cs
- Brush.cs
- TypeProvider.cs
- NameSpaceExtractor.cs
- Model3DGroup.cs
- StrongName.cs
- DBCommandBuilder.cs
- TdsValueSetter.cs
- XmlSchemaSimpleType.cs
- BmpBitmapDecoder.cs
- ChineseLunisolarCalendar.cs
- MediaEntryAttribute.cs
- ArrangedElement.cs
- WorkflowInstanceExtensionManager.cs
- EventProviderWriter.cs
- BezierSegment.cs
- _KerberosClient.cs
- MeshGeometry3D.cs
- TemplateBindingExpression.cs
- OleCmdHelper.cs
- AudioSignalProblemOccurredEventArgs.cs
- CultureSpecificCharacterBufferRange.cs
- CardSpacePolicyElement.cs
- DataServiceHost.cs
- ExpandSegmentCollection.cs
- CommonBehaviorsSection.cs
- OperationFormatStyle.cs
- Font.cs
- GPStream.cs
- ClientTargetSection.cs
- SQLByte.cs
- InstanceNameConverter.cs
- SqlDataReaderSmi.cs
- DelayedRegex.cs
- IndexedEnumerable.cs
- IndentedWriter.cs
- PersistenceProviderFactory.cs
- followingsibling.cs
- BorderGapMaskConverter.cs
- EntityParameterCollection.cs
- UiaCoreApi.cs
- translator.cs
- HtmlInputRadioButton.cs
- MultiBinding.cs
- RenderContext.cs
- TextOnlyOutput.cs
- OpenFileDialog.cs
- Root.cs
- DateTimeSerializationSection.cs
- SafePointer.cs
- NavigationProgressEventArgs.cs
- ToolBarButtonClickEvent.cs
- DateTimeFormat.cs
- CoreChannel.cs
- SiteMapProvider.cs
- ReadOnlyAttribute.cs
- SecurityVerifiedMessage.cs
- ToolStripRenderer.cs
- XamlParser.cs
- NamedObject.cs
- WrappingXamlSchemaContext.cs
- CriticalExceptions.cs
- CollaborationHelperFunctions.cs
- CacheSection.cs
- SortKey.cs
- FontFamily.cs
- EntityDataSourceMemberPath.cs
- DataRecordObjectView.cs
- FaultContractAttribute.cs
- LayoutSettings.cs
- SqlDependency.cs
- Variable.cs
- IPHostEntry.cs
- SystemDiagnosticsSection.cs
- Vector3DKeyFrameCollection.cs
- EmptyCollection.cs
- DateTime.cs
- RowSpanVector.cs
- FixedNode.cs
- ContainerAction.cs
- Renderer.cs
- Attachment.cs
- ModifiableIteratorCollection.cs
- Point4DConverter.cs
- ParameterToken.cs
- ToolStripPanelRow.cs
- ConstraintEnumerator.cs
- WeakEventTable.cs
- Parameter.cs
- BaseTreeIterator.cs
- DesignerHost.cs
- Configuration.cs
- WindowsProgressbar.cs
- NetworkStream.cs
- ApplicationId.cs
- UserControl.cs
- SolidColorBrush.cs
- UnsafeNativeMethods.cs
- AnnotationService.cs