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
- DeclaredTypeValidatorAttribute.cs
- PathData.cs
- XpsTokenContext.cs
- MatrixTransform3D.cs
- AlternateView.cs
- CryptoProvider.cs
- ZoneMembershipCondition.cs
- XmlBaseWriter.cs
- LinearGradientBrush.cs
- TcpClientSocketManager.cs
- ListBoxItemWrapperAutomationPeer.cs
- UnrecognizedPolicyAssertionElement.cs
- ExpressionVisitor.cs
- FixedSOMLineRanges.cs
- GeometryCombineModeValidation.cs
- Graph.cs
- FloaterBaseParagraph.cs
- TableLayout.cs
- TraceSection.cs
- NullableFloatSumAggregationOperator.cs
- KerberosTicketHashIdentifierClause.cs
- IdnElement.cs
- SerializationException.cs
- Debug.cs
- RawKeyboardInputReport.cs
- Compilation.cs
- WindowsProgressbar.cs
- AssociationProvider.cs
- SafeMILHandle.cs
- ListViewContainer.cs
- CursorInteropHelper.cs
- Stylesheet.cs
- COM2PictureConverter.cs
- HtmlTableRowCollection.cs
- XmlTextAttribute.cs
- XmlSchemaDatatype.cs
- Int32RectConverter.cs
- ScrollItemPattern.cs
- SequenceDesigner.cs
- XamlTreeBuilderBamlRecordWriter.cs
- Restrictions.cs
- processwaithandle.cs
- ViewStateException.cs
- HtmlInputHidden.cs
- MemberAccessException.cs
- XmlSchemaChoice.cs
- TransactedBatchingBehavior.cs
- BinaryNegotiation.cs
- FlowLayoutPanel.cs
- PropertyMappingExceptionEventArgs.cs
- EndGetFileNameFromUserRequest.cs
- oledbmetadatacollectionnames.cs
- NamedObject.cs
- IntPtr.cs
- PropertyBuilder.cs
- _NTAuthentication.cs
- TypeConverterAttribute.cs
- BooleanToVisibilityConverter.cs
- PrefixHandle.cs
- ErrorLog.cs
- SubstitutionDesigner.cs
- WindowsGraphics2.cs
- SchemaConstraints.cs
- StaticExtensionConverter.cs
- ComponentDesigner.cs
- ConnectionInterfaceCollection.cs
- WebExceptionStatus.cs
- SafeFileMapViewHandle.cs
- CircleHotSpot.cs
- PerformanceCounterPermission.cs
- CodeDOMUtility.cs
- SmtpCommands.cs
- ResponseStream.cs
- GridViewItemAutomationPeer.cs
- ProfileGroupSettings.cs
- SqlTopReducer.cs
- OleDbConnectionInternal.cs
- SafeMILHandle.cs
- DependencyProperty.cs
- AdornerLayer.cs
- Message.cs
- ColorConverter.cs
- HierarchicalDataSourceControl.cs
- BitSet.cs
- QilStrConcatenator.cs
- UITypeEditor.cs
- CodeSnippetExpression.cs
- PasswordRecovery.cs
- PageThemeCodeDomTreeGenerator.cs
- DataControlExtensions.cs
- TextContainerHelper.cs
- HtmlUtf8RawTextWriter.cs
- ScrollChangedEventArgs.cs
- RSAProtectedConfigurationProvider.cs
- SafeFileMapViewHandle.cs
- XmlDictionaryString.cs
- CopyAction.cs
- DbParameterHelper.cs
- FixedPageStructure.cs
- TableLayout.cs