Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / StructuralComparisons.cs / 1305376 / StructuralComparisons.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // using System; namespace System.Collections { public static class StructuralComparisons { private static IComparer s_StructuralComparer; private static IEqualityComparer s_StructuralEqualityComparer; public static IComparer StructuralComparer { get { IComparer comparer = s_StructuralComparer; if (comparer == null) { comparer = new StructuralComparer(); s_StructuralComparer = comparer; } return comparer; } } public static IEqualityComparer StructuralEqualityComparer { get { IEqualityComparer comparer = s_StructuralEqualityComparer; if (comparer == null) { comparer = new StructuralEqualityComparer(); s_StructuralEqualityComparer = comparer; } return comparer; } } } [Serializable] internal class StructuralEqualityComparer : IEqualityComparer { public new bool Equals(Object x, Object y) { if (x != null) { IStructuralEquatable seObj = x as IStructuralEquatable; if (seObj != null){ return seObj.Equals(y, this); } if (y != null) { return x.Equals(y); } else { return false; } } if (y != null) return false; return true; } public int GetHashCode(Object obj) { if (obj == null) return 0; IStructuralEquatable seObj = obj as IStructuralEquatable; if (seObj != null) { return seObj.GetHashCode(this); } return obj.GetHashCode(); } } [Serializable] internal class StructuralComparer : IComparer { public int Compare(Object x, Object y) { if (x == null) return y == null ? 0 : -1; if (y == null) return 1; IStructuralComparable scX = x as IStructuralComparable; if (scX != null) { return scX.CompareTo(y, this); } return Comparer.Default.Compare(x, y); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // using System; namespace System.Collections { public static class StructuralComparisons { private static IComparer s_StructuralComparer; private static IEqualityComparer s_StructuralEqualityComparer; public static IComparer StructuralComparer { get { IComparer comparer = s_StructuralComparer; if (comparer == null) { comparer = new StructuralComparer(); s_StructuralComparer = comparer; } return comparer; } } public static IEqualityComparer StructuralEqualityComparer { get { IEqualityComparer comparer = s_StructuralEqualityComparer; if (comparer == null) { comparer = new StructuralEqualityComparer(); s_StructuralEqualityComparer = comparer; } return comparer; } } } [Serializable] internal class StructuralEqualityComparer : IEqualityComparer { public new bool Equals(Object x, Object y) { if (x != null) { IStructuralEquatable seObj = x as IStructuralEquatable; if (seObj != null){ return seObj.Equals(y, this); } if (y != null) { return x.Equals(y); } else { return false; } } if (y != null) return false; return true; } public int GetHashCode(Object obj) { if (obj == null) return 0; IStructuralEquatable seObj = obj as IStructuralEquatable; if (seObj != null) { return seObj.GetHashCode(this); } return obj.GetHashCode(); } } [Serializable] internal class StructuralComparer : IComparer { public int Compare(Object x, Object y) { if (x == null) return y == null ? 0 : -1; if (y == null) return 1; IStructuralComparable scX = x as IStructuralComparable; if (scX != null) { return scX.CompareTo(y, this); } return Comparer.Default.Compare(x, y); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ViewDesigner.cs
- GridViewCellAutomationPeer.cs
- InputBinding.cs
- UInt32.cs
- DataContractSerializerElement.cs
- DtrList.cs
- ProtocolElementCollection.cs
- ToolStripDropDownClosedEventArgs.cs
- ScrollableControlDesigner.cs
- MsmqIntegrationBindingCollectionElement.cs
- SingletonConnectionReader.cs
- XmlCompatibilityReader.cs
- BindStream.cs
- StagingAreaInputItem.cs
- ScriptResourceHandler.cs
- SortQuery.cs
- TableLayoutPanel.cs
- EventDescriptorCollection.cs
- SourceFileInfo.cs
- PeerApplication.cs
- UTF32Encoding.cs
- Decimal.cs
- SQLBinary.cs
- MonthCalendar.cs
- isolationinterop.cs
- DoubleCollectionConverter.cs
- DeflateStreamAsyncResult.cs
- Psha1DerivedKeyGenerator.cs
- AdRotatorDesigner.cs
- CookieProtection.cs
- OpCodes.cs
- IsolationInterop.cs
- PowerModeChangedEventArgs.cs
- XmlSchemaValidator.cs
- GenericUriParser.cs
- Geometry3D.cs
- RuleSetBrowserDialog.cs
- TextRangeEdit.cs
- WindowsAltTab.cs
- ISessionStateStore.cs
- NativeWindow.cs
- _FtpDataStream.cs
- SymbolDocumentGenerator.cs
- XhtmlTextWriter.cs
- ContainerUIElement3D.cs
- ThreadSafeList.cs
- XmlSignatureManifest.cs
- KeyValueSerializer.cs
- XmlILOptimizerVisitor.cs
- InvokeProviderWrapper.cs
- ContentPropertyAttribute.cs
- XmlEventCache.cs
- PermissionListSet.cs
- StructuralCache.cs
- TraceInternal.cs
- CodeFieldReferenceExpression.cs
- __Filters.cs
- DbProviderFactoriesConfigurationHandler.cs
- StrokeRenderer.cs
- MailBnfHelper.cs
- FixedNode.cs
- TimeSpanMinutesConverter.cs
- mongolianshape.cs
- TaskDesigner.cs
- DesignerActionVerbList.cs
- SslStreamSecurityBindingElement.cs
- ScopeElementCollection.cs
- login.cs
- JournalEntry.cs
- DataMisalignedException.cs
- ArgumentException.cs
- CLRBindingWorker.cs
- UTF8Encoding.cs
- PluralizationServiceUtil.cs
- SmiContext.cs
- KeyPressEvent.cs
- AggregateNode.cs
- RoutingConfiguration.cs
- CredentialCache.cs
- CacheDependency.cs
- TemplateControl.cs
- DomainUpDown.cs
- LoaderAllocator.cs
- EntityDataSourceDataSelection.cs
- ObjectStateManager.cs
- Symbol.cs
- AssertFilter.cs
- EDesignUtil.cs
- NumberSubstitution.cs
- EnumValidator.cs
- QueryOperator.cs
- ExtractedStateEntry.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- TypeResolver.cs
- RecipientInfo.cs
- DrawingImage.cs
- XPathNodeList.cs
- ResolveResponse.cs
- StorageComplexPropertyMapping.cs
- ExpressionConverter.cs