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
- ReflectionPermission.cs
- CompilerScopeManager.cs
- PartBasedPackageProperties.cs
- SqlUserDefinedTypeAttribute.cs
- TextEffect.cs
- NetCodeGroup.cs
- Margins.cs
- ZoneButton.cs
- ActiveXContainer.cs
- LinqDataSourceView.cs
- ServiceModelTimeSpanValidator.cs
- DateTimeOffsetConverter.cs
- BuildProvider.cs
- EpmContentDeSerializer.cs
- BaseCodePageEncoding.cs
- WindowsSpinner.cs
- EventLogTraceListener.cs
- RoleManagerEventArgs.cs
- GenericIdentity.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- DetailsViewInsertedEventArgs.cs
- ReadOnlyDictionary.cs
- CompositeKey.cs
- ReferenceSchema.cs
- AutomationElementCollection.cs
- PropertyCondition.cs
- RemoteWebConfigurationHostStream.cs
- SigningCredentials.cs
- HostingEnvironmentSection.cs
- PersonalizableTypeEntry.cs
- SimpleLine.cs
- ValuePattern.cs
- SqlClientMetaDataCollectionNames.cs
- RectangleGeometry.cs
- EventEntry.cs
- WebConfigurationFileMap.cs
- ResourceReferenceKeyNotFoundException.cs
- StringReader.cs
- _SpnDictionary.cs
- GenericWebPart.cs
- FileStream.cs
- WebPartMinimizeVerb.cs
- RoutedEventArgs.cs
- TextEvent.cs
- FactoryMaker.cs
- MatrixKeyFrameCollection.cs
- TrustLevel.cs
- _OSSOCK.cs
- NotifyInputEventArgs.cs
- ApplyTemplatesAction.cs
- IFormattable.cs
- InvokeHandlers.cs
- OrderedDictionary.cs
- CodeConstructor.cs
- DataSourceProvider.cs
- BindingBase.cs
- LambdaCompiler.Logical.cs
- DataGridLinkButton.cs
- DocumentCollection.cs
- querybuilder.cs
- GenerateTemporaryAssemblyTask.cs
- TextBoxRenderer.cs
- FramingEncoders.cs
- SeekableMessageNavigator.cs
- ObjectMaterializedEventArgs.cs
- PriorityItem.cs
- HttpClientCertificate.cs
- SizeChangedEventArgs.cs
- ThousandthOfEmRealPoints.cs
- CqlIdentifiers.cs
- ProfilePropertySettingsCollection.cs
- RuntimeTransactionHandle.cs
- VariableExpressionConverter.cs
- XNodeSchemaApplier.cs
- ProfileManager.cs
- RecordManager.cs
- SetIterators.cs
- ScrollItemPattern.cs
- SqlWriter.cs
- SecurityTokenContainer.cs
- Root.cs
- TimerElapsedEvenArgs.cs
- MetaForeignKeyColumn.cs
- Function.cs
- UIElementCollection.cs
- WindowPatternIdentifiers.cs
- IndentedWriter.cs
- KeyNotFoundException.cs
- SetIterators.cs
- IncrementalHitTester.cs
- SingleAnimation.cs
- BaseInfoTable.cs
- AnnotationComponentManager.cs
- UnmanagedMemoryStream.cs
- BaseTreeIterator.cs
- FlowDecision.cs
- FileDetails.cs
- CollaborationHelperFunctions.cs
- FileLogRecordHeader.cs
- DBSqlParserColumnCollection.cs