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
- TransformGroup.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- UndoEngine.cs
- InvalidProgramException.cs
- dtdvalidator.cs
- WorkBatch.cs
- PowerModeChangedEventArgs.cs
- AddInController.cs
- SiteMapNodeCollection.cs
- AllMembershipCondition.cs
- DelegateOutArgument.cs
- LinkUtilities.cs
- SessionConnectionReader.cs
- DataKeyCollection.cs
- RectAnimationUsingKeyFrames.cs
- BuildTopDownAttribute.cs
- StrokeCollectionConverter.cs
- OdbcConnectionHandle.cs
- RuntimeConfig.cs
- GridPattern.cs
- NavigationService.cs
- ObjectDisposedException.cs
- CodeDefaultValueExpression.cs
- SelectorAutomationPeer.cs
- StackOverflowException.cs
- HttpResponseWrapper.cs
- StringSorter.cs
- CallContext.cs
- FieldBuilder.cs
- NetSectionGroup.cs
- FixedDocumentPaginator.cs
- PaperSize.cs
- LinkArea.cs
- WindowsPrincipal.cs
- MemberExpression.cs
- CommunicationObjectAbortedException.cs
- CodeStatement.cs
- XmlReader.cs
- SourceFileInfo.cs
- EntityViewGenerationAttribute.cs
- PasswordRecoveryDesigner.cs
- MailHeaderInfo.cs
- AvTrace.cs
- ApplicationInfo.cs
- SafeRightsManagementQueryHandle.cs
- BuildManagerHost.cs
- MimePart.cs
- AuthorizationSection.cs
- Process.cs
- ContextMenu.cs
- NativeMethods.cs
- ActivityExecutor.cs
- CollectionView.cs
- ToolStripItemEventArgs.cs
- BitmapMetadataBlob.cs
- webproxy.cs
- DataGridViewColumnCollection.cs
- RootBuilder.cs
- KeyTime.cs
- ColumnMapCopier.cs
- ObjectStateFormatter.cs
- EmptyImpersonationContext.cs
- SplineKeyFrames.cs
- RequiredFieldValidator.cs
- PropertyItemInternal.cs
- RtfNavigator.cs
- XmlDesignerDataSourceView.cs
- ContextStack.cs
- EntryIndex.cs
- GridViewUpdatedEventArgs.cs
- CodeSnippetTypeMember.cs
- HostExecutionContextManager.cs
- ImageListStreamer.cs
- ResourceDictionary.cs
- DetailsViewAutoFormat.cs
- ReceiveReply.cs
- ProcessManager.cs
- ReferenceService.cs
- WindowsSysHeader.cs
- XmlSchemaObjectCollection.cs
- DbgCompiler.cs
- HtmlHead.cs
- TagPrefixCollection.cs
- FilePrompt.cs
- ParentQuery.cs
- OptimizedTemplateContent.cs
- DataObject.cs
- TextRunProperties.cs
- Overlapped.cs
- TemplatePropertyEntry.cs
- SQLUtility.cs
- IntMinMaxAggregationOperator.cs
- Composition.cs
- String.cs
- Rotation3DKeyFrameCollection.cs
- SqlDataReader.cs
- ObjectDataSourceView.cs
- ToolBarTray.cs
- HttpListener.cs
- NetMsmqSecurityMode.cs