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
- TimerTable.cs
- DataGridCellsPanel.cs
- WebPermission.cs
- ActivityAction.cs
- ControlParameter.cs
- ContentDisposition.cs
- WbmpConverter.cs
- DeviceSpecificDesigner.cs
- FileDialogCustomPlace.cs
- WebControlsSection.cs
- CodeExpressionStatement.cs
- CodeParameterDeclarationExpression.cs
- QilExpression.cs
- Cloud.cs
- BulletedList.cs
- JsonClassDataContract.cs
- DBNull.cs
- XmlUtil.cs
- SafePEFileHandle.cs
- GcHandle.cs
- JournalEntry.cs
- MetadataCacheItem.cs
- Root.cs
- OleDbPropertySetGuid.cs
- XsltLibrary.cs
- ValueOfAction.cs
- PropertySegmentSerializer.cs
- Stroke2.cs
- ProcessProtocolHandler.cs
- JapaneseCalendar.cs
- BindingEntityInfo.cs
- regiisutil.cs
- XmlSchemaCollection.cs
- UnsafeNativeMethodsPenimc.cs
- WorkflowViewService.cs
- FtpWebResponse.cs
- SqlConnectionPoolGroupProviderInfo.cs
- CollectionConverter.cs
- Ref.cs
- SynchronizationContext.cs
- InlineObject.cs
- CodeCommentStatement.cs
- Point3D.cs
- PropertyMapper.cs
- DPCustomTypeDescriptor.cs
- CryptoKeySecurity.cs
- TextEditorCopyPaste.cs
- ScrollBar.cs
- FormatControl.cs
- NeutralResourcesLanguageAttribute.cs
- OleAutBinder.cs
- AssociationSet.cs
- FreezableCollection.cs
- DPCustomTypeDescriptor.cs
- AssemblyAttributes.cs
- XmlAttributeProperties.cs
- SymbolTable.cs
- SqlTriggerContext.cs
- StsCommunicationException.cs
- XmlElement.cs
- RemotingAttributes.cs
- GridViewUpdateEventArgs.cs
- NameValueSectionHandler.cs
- XmlEncodedRawTextWriter.cs
- Scanner.cs
- DataViewSetting.cs
- RewritingPass.cs
- RC2CryptoServiceProvider.cs
- MeshGeometry3D.cs
- WaitHandle.cs
- FixUp.cs
- ListControlConvertEventArgs.cs
- shaperfactoryquerycachekey.cs
- RefType.cs
- mediaeventshelper.cs
- PrivateFontCollection.cs
- TextBoxBase.cs
- _CommandStream.cs
- XmlSerializerNamespaces.cs
- JsonEnumDataContract.cs
- SafeSecurityHandles.cs
- CircleHotSpot.cs
- ParameterInfo.cs
- SqlDataSource.cs
- DrawItemEvent.cs
- ListDictionary.cs
- MailWebEventProvider.cs
- HierarchicalDataSourceControl.cs
- OdbcCommand.cs
- DnsEndPoint.cs
- MatrixCamera.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- TraceXPathNavigator.cs
- XmlObjectSerializerReadContextComplexJson.cs
- DataGridItemAutomationPeer.cs
- SerializationAttributes.cs
- XmlSchemaAnnotated.cs
- PolicyUnit.cs
- DataObject.cs
- Stack.cs