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
- CustomAssemblyResolver.cs
- WebResourceUtil.cs
- EnvelopedSignatureTransform.cs
- MimeMultiPart.cs
- DecimalConstantAttribute.cs
- XomlCompilerResults.cs
- TextChangedEventArgs.cs
- GridItemProviderWrapper.cs
- GraphicsPathIterator.cs
- altserialization.cs
- KeyInterop.cs
- GenericTypeParameterBuilder.cs
- Page.cs
- embossbitmapeffect.cs
- CounterSample.cs
- HandleCollector.cs
- QilXmlReader.cs
- BaseResourcesBuildProvider.cs
- TemplatedControlDesigner.cs
- TextTreeText.cs
- CollectionConverter.cs
- WebBrowser.cs
- SystemWebCachingSectionGroup.cs
- CapabilitiesPattern.cs
- OperandQuery.cs
- BaseDataBoundControl.cs
- ExtractorMetadata.cs
- AssemblyAttributesGoHere.cs
- ExtenderControl.cs
- SpellerError.cs
- TraceContextRecord.cs
- SystemFonts.cs
- PageAsyncTaskManager.cs
- ConnectionPoint.cs
- FileVersion.cs
- DateTimeEditor.cs
- QilTernary.cs
- ZipIOExtraFieldZip64Element.cs
- RegexRunner.cs
- CreateUserErrorEventArgs.cs
- RMEnrollmentPage1.cs
- CommonGetThemePartSize.cs
- CorePropertiesFilter.cs
- DataGridViewColumn.cs
- NameSpaceEvent.cs
- StringExpressionSet.cs
- SQLDateTime.cs
- FixedTextSelectionProcessor.cs
- Token.cs
- UTF8Encoding.cs
- ViewManager.cs
- ApplicationDirectory.cs
- controlskin.cs
- ColumnTypeConverter.cs
- EnumerableRowCollection.cs
- TimelineClockCollection.cs
- DrawingVisualDrawingContext.cs
- ConfigXmlComment.cs
- TextContainerHelper.cs
- TailPinnedEventArgs.cs
- OleDbParameterCollection.cs
- DrawingGroup.cs
- TargetException.cs
- GroupJoinQueryOperator.cs
- WebPartVerb.cs
- UserControlDesigner.cs
- FixedElement.cs
- NotifyInputEventArgs.cs
- BufferModeSettings.cs
- TracingConnectionInitiator.cs
- CopyOfAction.cs
- SqlStream.cs
- UseManagedPresentationBindingElementImporter.cs
- DependencyProperty.cs
- FileAuthorizationModule.cs
- DataPagerFieldCommandEventArgs.cs
- LayoutEvent.cs
- TabRenderer.cs
- DoubleCollectionValueSerializer.cs
- ErrorWrapper.cs
- _TransmitFileOverlappedAsyncResult.cs
- GeneralTransform3D.cs
- ExtractedStateEntry.cs
- CodeSnippetStatement.cs
- LicenseException.cs
- Pen.cs
- RawStylusInputCustomDataList.cs
- Int32RectConverter.cs
- ProfilePropertyNameValidator.cs
- CharacterMetricsDictionary.cs
- ObjectSet.cs
- PageClientProxyGenerator.cs
- SizeConverter.cs
- PkcsMisc.cs
- PolyBezierSegment.cs
- HttpCapabilitiesSectionHandler.cs
- Int32Animation.cs
- AuthenticationModuleElementCollection.cs
- _ContextAwareResult.cs
- DrawingBrush.cs