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
- ExpanderAutomationPeer.cs
- RoutedEventArgs.cs
- SizeAnimationClockResource.cs
- TreeSet.cs
- DynamicMetaObjectBinder.cs
- AssemblyHash.cs
- CheckBoxPopupAdapter.cs
- DebugHandleTracker.cs
- CompiledXpathExpr.cs
- SqlDataSourceView.cs
- BufferedGraphicsManager.cs
- Config.cs
- HtmlElementEventArgs.cs
- Cursors.cs
- HitTestParameters.cs
- OdbcRowUpdatingEvent.cs
- XmlDocument.cs
- AxImporter.cs
- AsyncResult.cs
- SoapHeader.cs
- Ipv6Element.cs
- StylusDevice.cs
- CustomAttributeBuilder.cs
- SchemaRegistration.cs
- FeatureSupport.cs
- PersonalizationEntry.cs
- SqlXml.cs
- StringHandle.cs
- CodeRegionDirective.cs
- AliasExpr.cs
- MobileControlPersister.cs
- TraceSwitch.cs
- EncryptedPackageFilter.cs
- LinqDataView.cs
- _ConnectOverlappedAsyncResult.cs
- AssemblyInfo.cs
- Exceptions.cs
- AuthenticatingEventArgs.cs
- EnumBuilder.cs
- ToolStripRenderEventArgs.cs
- ClientFormsIdentity.cs
- StickyNoteContentControl.cs
- bindurihelper.cs
- WindowsToolbarAsMenu.cs
- File.cs
- XmlCharacterData.cs
- XmlSchemaValidationException.cs
- EventRouteFactory.cs
- UInt64Converter.cs
- ReliableSession.cs
- NetCodeGroup.cs
- DropTarget.cs
- ListViewItem.cs
- DataGridViewSortCompareEventArgs.cs
- Compiler.cs
- WindowHideOrCloseTracker.cs
- LogExtentCollection.cs
- DataContractSerializer.cs
- ObjectHelper.cs
- TableLayoutRowStyleCollection.cs
- FontNamesConverter.cs
- DataGridColumn.cs
- DoubleAnimation.cs
- BinaryMethodMessage.cs
- RSAPKCS1SignatureFormatter.cs
- NativeMethods.cs
- ZipIOLocalFileHeader.cs
- OdbcFactory.cs
- NativeActivity.cs
- DbDataAdapter.cs
- SplitterCancelEvent.cs
- LocalFileSettingsProvider.cs
- DiffuseMaterial.cs
- util.cs
- XmlSchemaSimpleContent.cs
- ExtensionQuery.cs
- IndexedEnumerable.cs
- DocumentViewer.cs
- StringFunctions.cs
- EventArgs.cs
- UseManagedPresentationBindingElementImporter.cs
- TreeNodeCollection.cs
- GridViewDeleteEventArgs.cs
- Binding.cs
- EntityContainerRelationshipSet.cs
- PreviewKeyDownEventArgs.cs
- ActivationServices.cs
- BufferedGraphicsContext.cs
- CompositeTypefaceMetrics.cs
- Assembly.cs
- EntityDataSourceSelectedEventArgs.cs
- QuaternionRotation3D.cs
- XhtmlBasicFormAdapter.cs
- ToolStripItemImageRenderEventArgs.cs
- StringSource.cs
- ConfigurationLockCollection.cs
- SourceSwitch.cs
- IMembershipProvider.cs
- XmlSchemaImport.cs
- Variant.cs