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
- DataError.cs
- ChineseLunisolarCalendar.cs
- StorageScalarPropertyMapping.cs
- EraserBehavior.cs
- WebPartTransformerCollection.cs
- RadioButtonFlatAdapter.cs
- SignatureDescription.cs
- AsymmetricSecurityProtocol.cs
- MimeWriter.cs
- TextDecoration.cs
- IdentitySection.cs
- _emptywebproxy.cs
- XPathSelfQuery.cs
- ToolStripItemTextRenderEventArgs.cs
- ServiceHandle.cs
- ProtectedConfiguration.cs
- FacetEnabledSchemaElement.cs
- BooleanExpr.cs
- XPathDocumentBuilder.cs
- ArrangedElement.cs
- ByteStreamGeometryContext.cs
- ChildTable.cs
- ManageRequest.cs
- PersonalizableAttribute.cs
- ClientEventManager.cs
- WebPartsSection.cs
- BitmapFrameDecode.cs
- TextTreeFixupNode.cs
- PrintDialog.cs
- EnumConverter.cs
- XomlSerializationHelpers.cs
- RegexBoyerMoore.cs
- Merger.cs
- glyphs.cs
- WorkflowDefinitionDispenser.cs
- NetworkAddressChange.cs
- QilNode.cs
- DataAdapter.cs
- Component.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- HttpMethodAttribute.cs
- FlowDecision.cs
- MultiByteCodec.cs
- PenCursorManager.cs
- UrlUtility.cs
- CodeCommentStatement.cs
- ReadOnlyPropertyMetadata.cs
- SurrogateSelector.cs
- SemanticTag.cs
- DeploymentExceptionMapper.cs
- PageTheme.cs
- WpfGeneratedKnownTypes.cs
- WindowsSlider.cs
- NameSpaceEvent.cs
- PropertyMapper.cs
- SourceCollection.cs
- EventInfo.cs
- SslStream.cs
- GridErrorDlg.cs
- StylusTip.cs
- HandleRef.cs
- _SSPIWrapper.cs
- PerformanceCounterPermission.cs
- AssemblySettingAttributes.cs
- BinaryMethodMessage.cs
- BitmapEffectDrawingContent.cs
- SQLInt64Storage.cs
- HMACSHA512.cs
- UserControl.cs
- Separator.cs
- DecoderFallback.cs
- CfgParser.cs
- EasingQuaternionKeyFrame.cs
- ApplicationInterop.cs
- StyleXamlTreeBuilder.cs
- Dynamic.cs
- VersionedStream.cs
- ContentPropertyAttribute.cs
- ConfigurationSettings.cs
- WinCategoryAttribute.cs
- mansign.cs
- ScriptControl.cs
- TextRangeEdit.cs
- TypeDescriptorContext.cs
- SessionState.cs
- NamedElement.cs
- CreateUserWizard.cs
- TextWriter.cs
- RenderingEventArgs.cs
- StaticContext.cs
- ObjectView.cs
- Buffer.cs
- XmlNamedNodeMap.cs
- PasswordRecoveryAutoFormat.cs
- SequentialOutput.cs
- CodeGotoStatement.cs
- MethodSignatureGenerator.cs
- ToolTip.cs
- StructuralObject.cs
- SlotInfo.cs