Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- X509Certificate.cs
- XmlSchemaSimpleType.cs
- HttpListenerRequestUriBuilder.cs
- SessionViewState.cs
- EncoderFallback.cs
- CompilerGlobalScopeAttribute.cs
- TiffBitmapEncoder.cs
- AdapterUtil.cs
- BCLDebug.cs
- AlignmentXValidation.cs
- QuadraticBezierSegment.cs
- SettingsProperty.cs
- SafeFileMappingHandle.cs
- CodeGenHelper.cs
- TreeNodeCollectionEditor.cs
- RowToParametersTransformer.cs
- SpeechSynthesizer.cs
- XmlWrappingReader.cs
- RandomNumberGenerator.cs
- Rotation3DAnimationUsingKeyFrames.cs
- RoleExceptions.cs
- safex509handles.cs
- AlternateView.cs
- RotateTransform.cs
- CreateParams.cs
- NativeWrapper.cs
- IBuiltInEvidence.cs
- PersonalizableAttribute.cs
- Executor.cs
- StrokeCollection.cs
- BaseParser.cs
- CardSpaceSelector.cs
- CollectionDataContractAttribute.cs
- TypeContext.cs
- PartitionResolver.cs
- AppDomainFactory.cs
- ReadOnlyCollectionBase.cs
- BooleanKeyFrameCollection.cs
- EventMemberCodeDomSerializer.cs
- ServiceX509SecurityTokenProvider.cs
- ClientUtils.cs
- LinqDataSource.cs
- SHA1.cs
- FixedPageProcessor.cs
- ISFTagAndGuidCache.cs
- BindingSource.cs
- ControlUtil.cs
- TextTreeExtractElementUndoUnit.cs
- CqlParser.cs
- CodeTypeReferenceCollection.cs
- BuilderPropertyEntry.cs
- CodeExporter.cs
- StringSource.cs
- QuaternionConverter.cs
- DataTransferEventArgs.cs
- PageThemeParser.cs
- ConstructorArgumentAttribute.cs
- DeploymentSectionCache.cs
- FrameworkElement.cs
- _DigestClient.cs
- SplineKeyFrames.cs
- PeerTransportListenAddressValidator.cs
- BufferedConnection.cs
- ControlTemplate.cs
- AnimationStorage.cs
- ListSortDescription.cs
- SectionUpdates.cs
- TreeBuilder.cs
- DataColumnMapping.cs
- XmlChildNodes.cs
- XPathNavigatorKeyComparer.cs
- SqlVersion.cs
- DictionarySectionHandler.cs
- Geometry3D.cs
- ElementNotAvailableException.cs
- MenuItemStyle.cs
- TextDecorationCollectionConverter.cs
- TheQuery.cs
- DescendantOverDescendantQuery.cs
- ISAPIRuntime.cs
- StateWorkerRequest.cs
- AnnouncementDispatcherAsyncResult.cs
- KeyboardDevice.cs
- WindowsIPAddress.cs
- PixelFormats.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- CollectionType.cs
- ApplicationHost.cs
- EditorPartChrome.cs
- ButtonChrome.cs
- HttpWebRequestElement.cs
- CalloutQueueItem.cs
- DesignerSerializationOptionsAttribute.cs
- DetailsViewRow.cs
- ObjectContextServiceProvider.cs
- AllMembershipCondition.cs
- AssociationSetEnd.cs
- DbCommandTree.cs
- HuffModule.cs
- CorrelationInitializer.cs