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
- NamespaceQuery.cs
- XAMLParseException.cs
- MsmqProcessProtocolHandler.cs
- AssemblyBuilder.cs
- IResourceProvider.cs
- BypassElement.cs
- PathFigure.cs
- SafeBitVector32.cs
- BitmapData.cs
- ActivationServices.cs
- UpdatePanelTrigger.cs
- FixedPage.cs
- MeasureItemEvent.cs
- XmlSchemaObjectTable.cs
- TlsnegoTokenAuthenticator.cs
- ScrollViewerAutomationPeer.cs
- PageAsyncTaskManager.cs
- DateTimeFormatInfo.cs
- BaseCollection.cs
- JsonDeserializer.cs
- Int16AnimationBase.cs
- DataControlPagerLinkButton.cs
- FormViewPagerRow.cs
- JoinSymbol.cs
- TextEffect.cs
- IgnoreSectionHandler.cs
- FreeFormPanel.cs
- XmlBinaryWriterSession.cs
- AndCondition.cs
- TimeSpan.cs
- TimersDescriptionAttribute.cs
- SiteOfOriginPart.cs
- MetadataException.cs
- StateChangeEvent.cs
- X509CertificateClaimSet.cs
- XamlGridLengthSerializer.cs
- IntPtr.cs
- Activity.cs
- Dump.cs
- FreeFormDragDropManager.cs
- Normalization.cs
- Camera.cs
- ListViewDesigner.cs
- OpenTypeCommon.cs
- WorkingDirectoryEditor.cs
- Profiler.cs
- TextDecorationCollection.cs
- EventDescriptor.cs
- OptimizerPatterns.cs
- SubtreeProcessor.cs
- SqlSupersetValidator.cs
- CacheHelper.cs
- ByteFacetDescriptionElement.cs
- HostingPreferredMapPath.cs
- EditorAttribute.cs
- ADMembershipProvider.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- CodeThrowExceptionStatement.cs
- SslSecurityTokenParameters.cs
- DefaultPropertyAttribute.cs
- SafeSecurityHelper.cs
- XmlDeclaration.cs
- XmlDocumentFragment.cs
- AuthorizationRule.cs
- MenuBase.cs
- TextTreeText.cs
- BindingContext.cs
- DataGridColumnDropSeparator.cs
- ReadOnlyPropertyMetadata.cs
- ImageBrush.cs
- XslAst.cs
- XmlILIndex.cs
- ExtractCollection.cs
- ApplicationCommands.cs
- ProtocolState.cs
- MetadataProperty.cs
- ActivityLocationReferenceEnvironment.cs
- XmlSchemaAttribute.cs
- securitycriticaldataformultiplegetandset.cs
- RenderTargetBitmap.cs
- XmlDataSourceDesigner.cs
- dbenumerator.cs
- ToolStripSplitButton.cs
- DynamicResourceExtension.cs
- FontFaceLayoutInfo.cs
- TypePresenter.xaml.cs
- ServiceEndpointElement.cs
- SkewTransform.cs
- ListSourceHelper.cs
- GeometryConverter.cs
- GridViewUpdateEventArgs.cs
- SecurityPolicySection.cs
- MultiTrigger.cs
- MimeBasePart.cs
- baseaxisquery.cs
- Visual3D.cs
- TaiwanCalendar.cs
- AuthenticationManager.cs
- ColumnResizeUndoUnit.cs
- BaseValidator.cs