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
- ColorKeyFrameCollection.cs
- SqlProcedureAttribute.cs
- PtsContext.cs
- RijndaelCryptoServiceProvider.cs
- X509Certificate2.cs
- UriTemplatePathSegment.cs
- EncoderParameters.cs
- DbConnectionInternal.cs
- CodePageUtils.cs
- OciLobLocator.cs
- JsonFormatGeneratorStatics.cs
- BackgroundFormatInfo.cs
- HwndSourceParameters.cs
- BorderGapMaskConverter.cs
- ComboBox.cs
- CacheChildrenQuery.cs
- ResourceDisplayNameAttribute.cs
- ConvertEvent.cs
- NameTable.cs
- PropertyContainer.cs
- PersonalizationStateInfo.cs
- HttpListenerElement.cs
- DescendentsWalker.cs
- EntityCommand.cs
- AddInServer.cs
- WorkflowMarkupElementEventArgs.cs
- SymLanguageVendor.cs
- XpsException.cs
- ApplicationSecurityManager.cs
- TypefaceMap.cs
- DocobjHost.cs
- XmlKeywords.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- CompiledQueryCacheKey.cs
- TextTreeTextBlock.cs
- EnumValidator.cs
- SaveFileDialog.cs
- ActivityCodeGenerator.cs
- DbSetClause.cs
- SecurityPermission.cs
- SortedSetDebugView.cs
- RecognizerInfo.cs
- TraceProvider.cs
- OneOfTypeConst.cs
- CellConstant.cs
- DrawingImage.cs
- EngineSite.cs
- Color.cs
- CompareValidator.cs
- _WinHttpWebProxyDataBuilder.cs
- FormView.cs
- StylusEditingBehavior.cs
- CompressedStack.cs
- WebPartAuthorizationEventArgs.cs
- GuidTagList.cs
- Transform3D.cs
- ByteStreamBufferedMessageData.cs
- ExpandCollapseProviderWrapper.cs
- SpeechRecognitionEngine.cs
- TextRangeSerialization.cs
- WebPartCancelEventArgs.cs
- DataDocumentXPathNavigator.cs
- MessageHeader.cs
- ClientScriptManager.cs
- GridViewSelectEventArgs.cs
- DataServiceExpressionVisitor.cs
- XmlReaderSettings.cs
- ExceptQueryOperator.cs
- TextServicesContext.cs
- TableDetailsCollection.cs
- DialogResultConverter.cs
- DesignerLinkAdapter.cs
- ConfigurationProviderException.cs
- XmlDocument.cs
- ExpressionBuilderContext.cs
- ContainerFilterService.cs
- Compiler.cs
- HtmlInputFile.cs
- WebDisplayNameAttribute.cs
- InheritanceContextChangedEventManager.cs
- SystemIPGlobalProperties.cs
- EnterpriseServicesHelper.cs
- IgnoreFlushAndCloseStream.cs
- CompilerHelpers.cs
- HttpContext.cs
- HtmlTableCellCollection.cs
- StrokeNode.cs
- diagnosticsswitches.cs
- WebPartConnectionCollection.cs
- PeerSecurityHelpers.cs
- RoleGroupCollection.cs
- OutputCacheEntry.cs
- ImageMetadata.cs
- KeyInterop.cs
- BitmapSizeOptions.cs
- NotifyIcon.cs
- ISAPIApplicationHost.cs
- GridItem.cs
- TabletDevice.cs
- HandleCollector.cs