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
- Gdiplus.cs
- WebPartCloseVerb.cs
- SimpleWebHandlerParser.cs
- recordstatescratchpad.cs
- WebRequestModuleElementCollection.cs
- FormsAuthenticationCredentials.cs
- ComplusTypeValidator.cs
- Visitor.cs
- SerialPinChanges.cs
- TextServicesLoader.cs
- WindowsProgressbar.cs
- _IPv4Address.cs
- RemotingConfiguration.cs
- SmtpTransport.cs
- EditorZoneDesigner.cs
- PolyQuadraticBezierSegment.cs
- StateItem.cs
- HtmlShim.cs
- WorkflowPersistenceContext.cs
- BamlBinaryReader.cs
- LambdaCompiler.Binary.cs
- RowSpanVector.cs
- EntryIndex.cs
- RecordManager.cs
- Roles.cs
- HtmlElementCollection.cs
- FreeIndexList.cs
- Error.cs
- HtmlInputText.cs
- EntityTypeEmitter.cs
- HtmlInputSubmit.cs
- XmlSchemaSubstitutionGroup.cs
- iisPickupDirectory.cs
- CellRelation.cs
- DropShadowEffect.cs
- WebPartEditorOkVerb.cs
- FrameworkTemplate.cs
- MetricEntry.cs
- ProfileModule.cs
- DayRenderEvent.cs
- UnicodeEncoding.cs
- XhtmlBasicCommandAdapter.cs
- XmlHierarchicalDataSourceView.cs
- CodeAttributeDeclaration.cs
- EncodingInfo.cs
- TabRenderer.cs
- HostProtectionPermission.cs
- EdmItemCollection.cs
- FixedSOMLineCollection.cs
- DBPropSet.cs
- BaseHashHelper.cs
- EasingKeyFrames.cs
- BaseParser.cs
- StackSpiller.Bindings.cs
- VisualStyleElement.cs
- PowerModeChangedEventArgs.cs
- QilPatternVisitor.cs
- unitconverter.cs
- XmlObjectSerializerReadContext.cs
- TableCellCollection.cs
- ValidationEventArgs.cs
- TextServicesCompartment.cs
- RealProxy.cs
- AnnotationResourceCollection.cs
- RtType.cs
- PropertyItem.cs
- SecurityTokenResolver.cs
- Identity.cs
- Cursors.cs
- PerformanceCounter.cs
- MouseEventArgs.cs
- CompareValidator.cs
- ComplexPropertyEntry.cs
- Size.cs
- MediaElement.cs
- LinkLabel.cs
- TranslateTransform3D.cs
- Substitution.cs
- CatalogZoneBase.cs
- AppSettingsReader.cs
- FormViewUpdateEventArgs.cs
- FontDialog.cs
- ProcessStartInfo.cs
- XslTransform.cs
- MarshalByRefObject.cs
- CounterCreationData.cs
- WhitespaceRuleReader.cs
- ByeMessage11.cs
- ReflectTypeDescriptionProvider.cs
- ConstantExpression.cs
- Validator.cs
- ErrorFormatterPage.cs
- SettingsSection.cs
- SqlDataSourceView.cs
- ACL.cs
- TextEffectCollection.cs
- FontStretches.cs
- ParentUndoUnit.cs
- XmlFormatReaderGenerator.cs
- LateBoundBitmapDecoder.cs