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
- UnsafeNetInfoNativeMethods.cs
- PagedDataSource.cs
- TreeWalkHelper.cs
- Table.cs
- SafeUserTokenHandle.cs
- XMLSyntaxException.cs
- DelayDesigner.cs
- SourceElementsCollection.cs
- ValidatingReaderNodeData.cs
- AsymmetricSignatureFormatter.cs
- RuleSetDialog.Designer.cs
- ControlBuilderAttribute.cs
- TraceListeners.cs
- DataGridTextBox.cs
- DataSpaceManager.cs
- SrgsElement.cs
- KeyGesture.cs
- ScriptingRoleServiceSection.cs
- COM2TypeInfoProcessor.cs
- DataObjectAttribute.cs
- TargetControlTypeAttribute.cs
- SchemaEntity.cs
- RemotingAttributes.cs
- Visual3DCollection.cs
- BindableTemplateBuilder.cs
- ProcessThread.cs
- PointConverter.cs
- DataTableReaderListener.cs
- DelegateBodyWriter.cs
- DurableEnlistmentState.cs
- ItemsControl.cs
- ColumnMapTranslator.cs
- HMACMD5.cs
- Comparer.cs
- SemaphoreSecurity.cs
- DesignerVerb.cs
- ErrorWrapper.cs
- BinaryUtilClasses.cs
- serverconfig.cs
- MetadataItemSerializer.cs
- TableChangeProcessor.cs
- DesignerLinkAdapter.cs
- ParameterBuilder.cs
- DataGridViewRowsRemovedEventArgs.cs
- ProfileGroupSettings.cs
- DataGridViewLinkColumn.cs
- HttpProtocolReflector.cs
- NamespaceEmitter.cs
- KernelTypeValidation.cs
- StorageComplexTypeMapping.cs
- XmlImplementation.cs
- MarkerProperties.cs
- TextTreeText.cs
- SelectionPatternIdentifiers.cs
- LinearKeyFrames.cs
- CommonRemoteMemoryBlock.cs
- VariableQuery.cs
- StreamSecurityUpgradeAcceptorBase.cs
- TypeSystem.cs
- WebConvert.cs
- CancellableEnumerable.cs
- DesignerToolboxInfo.cs
- Variant.cs
- RootBrowserWindowProxy.cs
- Decoder.cs
- EditorBrowsableAttribute.cs
- SevenBitStream.cs
- InvalidCastException.cs
- WsdlBuildProvider.cs
- GifBitmapEncoder.cs
- Byte.cs
- MessageBox.cs
- SqlCommandSet.cs
- ContentPathSegment.cs
- SoapSchemaImporter.cs
- XmlWellformedWriter.cs
- _FtpControlStream.cs
- ObsoleteAttribute.cs
- ObjectTag.cs
- ApplicationException.cs
- Profiler.cs
- ObjectView.cs
- SqlDataSource.cs
- CodePropertyReferenceExpression.cs
- HttpRequestWrapper.cs
- PageBreakRecord.cs
- WebBrowserHelper.cs
- HybridObjectCache.cs
- UIntPtr.cs
- ExpressionEditor.cs
- FormsAuthenticationConfiguration.cs
- PrefixHandle.cs
- _Events.cs
- SortExpressionBuilder.cs
- VisualState.cs
- XmlValidatingReader.cs
- ServiceBusyException.cs
- XmlDataSource.cs
- SystemFonts.cs
- NavigationService.cs