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
- SessionPageStateSection.cs
- NullPackagingPolicy.cs
- ArglessEventHandlerProxy.cs
- WebServicesDescriptionAttribute.cs
- BindableAttribute.cs
- FormsAuthentication.cs
- OdbcConnectionFactory.cs
- ItemContainerGenerator.cs
- SqlFacetAttribute.cs
- RowUpdatingEventArgs.cs
- URLIdentityPermission.cs
- LineBreakRecord.cs
- InputLanguageEventArgs.cs
- GraphicsPath.cs
- RunWorkerCompletedEventArgs.cs
- NavigationPropertySingletonExpression.cs
- DesignerLoader.cs
- ProxyAttribute.cs
- DbConnectionOptions.cs
- xamlnodes.cs
- LinqToSqlWrapper.cs
- DataGridViewImageCell.cs
- UriParserTemplates.cs
- CanonicalizationDriver.cs
- LiteralControl.cs
- XmlWriterSettings.cs
- ContentTextAutomationPeer.cs
- ToolboxItemAttribute.cs
- BinaryConverter.cs
- FixedMaxHeap.cs
- WebPartTracker.cs
- ItemChangedEventArgs.cs
- BStrWrapper.cs
- ListMarkerSourceInfo.cs
- BuildResult.cs
- SrgsSubset.cs
- ElementFactory.cs
- StringReader.cs
- SchemaElementLookUpTable.cs
- HuffmanTree.cs
- HttpHandlerAction.cs
- RangeValuePattern.cs
- WriteLine.cs
- GridToolTip.cs
- MessageFilter.cs
- DataGridViewComboBoxEditingControl.cs
- backend.cs
- PeekCompletedEventArgs.cs
- QilInvokeEarlyBound.cs
- NonSerializedAttribute.cs
- WebPartCancelEventArgs.cs
- BinaryWriter.cs
- DescendantQuery.cs
- SymmetricAlgorithm.cs
- FilterEventArgs.cs
- XmlEncoding.cs
- BlurEffect.cs
- PaintEvent.cs
- FloaterParaClient.cs
- AssemblyCache.cs
- ItemMap.cs
- WebSysDisplayNameAttribute.cs
- PersonalizableTypeEntry.cs
- JsonServiceDocumentSerializer.cs
- _UriTypeConverter.cs
- unitconverter.cs
- ListItemParagraph.cs
- CodeDOMProvider.cs
- XmlSecureResolver.cs
- SourceFileInfo.cs
- FunctionCommandText.cs
- embossbitmapeffect.cs
- NativeMethods.cs
- ApplicationInfo.cs
- ApplicationServicesHostFactory.cs
- XsltLibrary.cs
- ErrorHandler.cs
- ExpressionLexer.cs
- TransactionFlowBindingElementImporter.cs
- MatrixTransform3D.cs
- GifBitmapEncoder.cs
- AuthenticationService.cs
- RootProfilePropertySettingsCollection.cs
- ResourcePermissionBaseEntry.cs
- DataServiceException.cs
- XmlSignificantWhitespace.cs
- InvalidDocumentContentsException.cs
- Point4D.cs
- SerTrace.cs
- ConfigXmlWhitespace.cs
- BinaryParser.cs
- Formatter.cs
- StrongNameMembershipCondition.cs
- ADRole.cs
- DesignerActionItem.cs
- CacheModeValueSerializer.cs
- EnumDataContract.cs
- WindowsImpersonationContext.cs
- TextSelection.cs
- WindowsMenu.cs