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
- ListView.cs
- LookupNode.cs
- TemplateBuilder.cs
- parserscommon.cs
- Rfc2898DeriveBytes.cs
- ProjectionCamera.cs
- _CacheStreams.cs
- BamlReader.cs
- RotateTransform3D.cs
- EventlogProvider.cs
- ConnectionManagementElement.cs
- ComponentChangedEvent.cs
- MouseEvent.cs
- CodeAttributeDeclarationCollection.cs
- Vector3dCollection.cs
- AlphaSortedEnumConverter.cs
- PeerFlooder.cs
- NativeMethods.cs
- DoubleCollectionValueSerializer.cs
- TagElement.cs
- Pool.cs
- XPathCompileException.cs
- DataBindEngine.cs
- Signature.cs
- XmlSchemaValidationException.cs
- ListViewDataItem.cs
- LabelAutomationPeer.cs
- Deserializer.cs
- RemotingServices.cs
- ForwardPositionQuery.cs
- DataColumn.cs
- XmlStringTable.cs
- Win32SafeHandles.cs
- AnnotationStore.cs
- Int16KeyFrameCollection.cs
- MultiTrigger.cs
- DropDownButton.cs
- CodeCatchClauseCollection.cs
- HyperLink.cs
- InfoCardSymmetricCrypto.cs
- PickBranch.cs
- ProgressPage.cs
- jithelpers.cs
- Calendar.cs
- SharedStream.cs
- RemotingConfiguration.cs
- HostSecurityManager.cs
- ProviderMetadata.cs
- JavaScriptString.cs
- smtpconnection.cs
- JsonUriDataContract.cs
- WebPartActionVerb.cs
- Native.cs
- UshortList2.cs
- ResXResourceSet.cs
- RequestQueue.cs
- BamlCollectionHolder.cs
- ThreadStaticAttribute.cs
- DataTemplateSelector.cs
- _TLSstream.cs
- ApplicationDirectoryMembershipCondition.cs
- SecondaryIndex.cs
- ListControl.cs
- DataGridViewButtonColumn.cs
- Roles.cs
- StagingAreaInputItem.cs
- RawMouseInputReport.cs
- SqlVisitor.cs
- OpenTypeLayoutCache.cs
- WebFormsRootDesigner.cs
- DateTimeFormat.cs
- AddInAttribute.cs
- WebContext.cs
- DataSourceControlBuilder.cs
- TreeViewBindingsEditor.cs
- Speller.cs
- InlineCollection.cs
- WebControl.cs
- ConnectionProviderAttribute.cs
- SerTrace.cs
- SourceSwitch.cs
- XmlSerializableReader.cs
- ExtendedProtectionPolicy.cs
- ArraySubsetEnumerator.cs
- RowTypePropertyElement.cs
- PropertyIDSet.cs
- ConnectionConsumerAttribute.cs
- CachedFontFace.cs
- ColumnResult.cs
- ConnectionPointCookie.cs
- SyndicationLink.cs
- IisTraceWebEventProvider.cs
- ListSortDescription.cs
- SortFieldComparer.cs
- EllipticalNodeOperations.cs
- WindowsListViewItem.cs
- GridPattern.cs
- AttachedPropertyBrowsableAttribute.cs
- PeerInputChannelListener.cs
- Int32CollectionConverter.cs