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
- SuspendDesigner.cs
- DynamicILGenerator.cs
- ListDataBindEventArgs.cs
- SortDescriptionCollection.cs
- ClientSession.cs
- Rijndael.cs
- ListItemsPage.cs
- MobileFormsAuthentication.cs
- XmlWhitespace.cs
- DataGridViewCellStyleConverter.cs
- CopyNodeSetAction.cs
- ProcessInfo.cs
- SolidColorBrush.cs
- MatrixAnimationBase.cs
- GeneralTransform.cs
- HtmlTitle.cs
- XPathException.cs
- SendingRequestEventArgs.cs
- CrossAppDomainChannel.cs
- StackOverflowException.cs
- InputLanguageCollection.cs
- HWStack.cs
- GridItemProviderWrapper.cs
- SamlAssertionKeyIdentifierClause.cs
- JpegBitmapEncoder.cs
- ObjectViewFactory.cs
- DesignerObject.cs
- TableRow.cs
- VirtualizingStackPanel.cs
- RequestSecurityTokenResponseCollection.cs
- ExpressionBuilder.cs
- RequestCachingSection.cs
- LookupNode.cs
- DetailsViewDeletedEventArgs.cs
- CellTreeSimplifier.cs
- DescendantQuery.cs
- ResXResourceReader.cs
- Compiler.cs
- SessionEndingEventArgs.cs
- MenuItemCollectionEditor.cs
- ApplicationServiceHelper.cs
- ArraySubsetEnumerator.cs
- DriveNotFoundException.cs
- ChangeToolStripParentVerb.cs
- ListViewDataItem.cs
- EntityDataSource.cs
- SqlTypesSchemaImporter.cs
- FixedTextSelectionProcessor.cs
- ToolStripButton.cs
- DataContractSerializer.cs
- DispatcherExceptionEventArgs.cs
- ListViewItemEventArgs.cs
- ExpressionHelper.cs
- CodeThrowExceptionStatement.cs
- Brush.cs
- RegexRunnerFactory.cs
- CanonicalFormWriter.cs
- Attributes.cs
- SafeNativeMethodsOther.cs
- BindingElement.cs
- NominalTypeEliminator.cs
- UInt64Converter.cs
- ControlAdapter.cs
- DesignerSerializerAttribute.cs
- ObjectParameter.cs
- ContentIterators.cs
- TypeForwardedToAttribute.cs
- GroupedContextMenuStrip.cs
- WindowsIPAddress.cs
- XamlFigureLengthSerializer.cs
- ProfileGroupSettings.cs
- DataGrid.cs
- DataException.cs
- WebPartEditorApplyVerb.cs
- CommandField.cs
- SystemIPGlobalStatistics.cs
- AttributeInfo.cs
- SecurityUtils.cs
- HttpDebugHandler.cs
- TemplateKeyConverter.cs
- Floater.cs
- ParameterCollection.cs
- QuaternionAnimationUsingKeyFrames.cs
- HttpAsyncResult.cs
- XmlAttributeCollection.cs
- DataGridViewComboBoxCell.cs
- EventlogProvider.cs
- PeerConnector.cs
- FrameworkElementFactory.cs
- Point3DCollection.cs
- PermissionSetTriple.cs
- ExpressionBinding.cs
- EntityViewGenerator.cs
- InsufficientMemoryException.cs
- XmlQueryCardinality.cs
- RedirectionProxy.cs
- DataRow.cs
- Debugger.cs
- SvcMapFile.cs
- CodeArrayCreateExpression.cs