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
- TextCharacters.cs
- HttpRequest.cs
- ActivityDesignerLayoutSerializers.cs
- MobileControlDesigner.cs
- StyleXamlParser.cs
- SafeViewOfFileHandle.cs
- PointLightBase.cs
- Variant.cs
- XmlSchemaSimpleContent.cs
- ObfuscateAssemblyAttribute.cs
- AutoResizedEvent.cs
- Debug.cs
- WindowsStreamSecurityElement.cs
- DataRelationPropertyDescriptor.cs
- OrderByQueryOptionExpression.cs
- SwitchLevelAttribute.cs
- MemberPath.cs
- SchemaCollectionPreprocessor.cs
- DesignerAdapterAttribute.cs
- FixedTextSelectionProcessor.cs
- EntryIndex.cs
- QueuePathDialog.cs
- SystemNetHelpers.cs
- HttpsTransportElement.cs
- FormViewPagerRow.cs
- DebugHandleTracker.cs
- PageThemeBuildProvider.cs
- SqlDataSourceCache.cs
- RegexCaptureCollection.cs
- DefaultObjectSerializer.cs
- OutputCacheProfile.cs
- SyndicationSerializer.cs
- tibetanshape.cs
- List.cs
- TypedColumnHandler.cs
- DrawingImage.cs
- IPAddressCollection.cs
- WorkItem.cs
- Transform3DGroup.cs
- XmlQualifiedNameTest.cs
- MasterPage.cs
- XmlQueryRuntime.cs
- COM2PropertyDescriptor.cs
- InternalBufferManager.cs
- EventMap.cs
- PartManifestEntry.cs
- TransactionState.cs
- BooleanKeyFrameCollection.cs
- Renderer.cs
- ConfigurationSchemaErrors.cs
- DataServiceRequestOfT.cs
- EndPoint.cs
- ApplicationHost.cs
- OdbcInfoMessageEvent.cs
- ConfigurationSection.cs
- SelectionProcessor.cs
- StaticFileHandler.cs
- SocketSettings.cs
- ChtmlFormAdapter.cs
- RegexParser.cs
- TextEditorSelection.cs
- DownloadProgressEventArgs.cs
- ProjectionPlan.cs
- InlineCollection.cs
- EventDescriptor.cs
- UriWriter.cs
- ExceptionUtil.cs
- WindowsButton.cs
- ProjectionCamera.cs
- XmlSchemaComplexContentExtension.cs
- IISUnsafeMethods.cs
- CodeConditionStatement.cs
- Expression.cs
- SimplePropertyEntry.cs
- PostBackOptions.cs
- WsdlBuildProvider.cs
- VerificationAttribute.cs
- InputBinding.cs
- BindingCompleteEventArgs.cs
- ConfigXmlDocument.cs
- X509Certificate2Collection.cs
- odbcmetadatacolumnnames.cs
- DoubleAnimationUsingPath.cs
- CollectionExtensions.cs
- ExpressionBuilder.cs
- AutomationPeer.cs
- StrokeRenderer.cs
- VariantWrapper.cs
- XmlIterators.cs
- ActivityExecutorSurrogate.cs
- XmlSchemaSimpleContentRestriction.cs
- WindowsListViewGroup.cs
- OracleNumber.cs
- CodeConstructor.cs
- UIntPtr.cs
- SmiEventSink.cs
- Preprocessor.cs
- TypeConverterHelper.cs
- NamespaceMapping.cs
- HttpProfileGroupBase.cs