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
- TextDecoration.cs
- BamlVersionHeader.cs
- IPHostEntry.cs
- CompiledQueryCacheEntry.cs
- PeoplePickerWrapper.cs
- TripleDESCryptoServiceProvider.cs
- WebBrowserNavigatingEventHandler.cs
- XmlWriterSettings.cs
- LoginAutoFormat.cs
- TableProviderWrapper.cs
- KeyEventArgs.cs
- ScalarType.cs
- SimpleTypeResolver.cs
- CodeAttributeArgumentCollection.cs
- InheritedPropertyChangedEventArgs.cs
- BaseCollection.cs
- DelegatedStream.cs
- DataGridViewHeaderCell.cs
- PackUriHelper.cs
- COM2IDispatchConverter.cs
- ObjectDataSourceSelectingEventArgs.cs
- BrowserCapabilitiesFactoryBase.cs
- SeverityFilter.cs
- Memoizer.cs
- CompletionBookmark.cs
- ValidationRuleCollection.cs
- XsdDuration.cs
- KeyValuePair.cs
- SqlClientMetaDataCollectionNames.cs
- ExpressionParser.cs
- DataColumn.cs
- IDispatchConstantAttribute.cs
- ValidationRule.cs
- HttpApplicationFactory.cs
- Int64Storage.cs
- ScrollChangedEventArgs.cs
- AppDomainInfo.cs
- MimeAnyImporter.cs
- QualifiedCellIdBoolean.cs
- CounterCreationData.cs
- DataStorage.cs
- PropertyFilterAttribute.cs
- ResourceReferenceKeyNotFoundException.cs
- rsa.cs
- HybridWebProxyFinder.cs
- CreateParams.cs
- UnsafeMethods.cs
- BitmapEffectCollection.cs
- RangeValuePattern.cs
- JsonReaderWriterFactory.cs
- Image.cs
- SafeRegistryKey.cs
- FixedTextSelectionProcessor.cs
- StyleCollectionEditor.cs
- XsltLoader.cs
- RoutedPropertyChangedEventArgs.cs
- dtdvalidator.cs
- PointHitTestParameters.cs
- ScalarOps.cs
- DataControlReferenceCollection.cs
- WsatAdminException.cs
- ResolveMatchesCD1.cs
- WebPartTransformer.cs
- StyleXamlParser.cs
- ItemList.cs
- _ProxyChain.cs
- OleDbInfoMessageEvent.cs
- CapabilitiesSection.cs
- UnmanagedHandle.cs
- SecurityRuntime.cs
- odbcmetadatacollectionnames.cs
- DetailsViewPageEventArgs.cs
- Parameter.cs
- NavigationService.cs
- AccessDataSourceDesigner.cs
- PlacementWorkspace.cs
- XPathScanner.cs
- HttpsTransportBindingElement.cs
- DataPagerFieldCommandEventArgs.cs
- ModuleBuilderData.cs
- EllipseGeometry.cs
- TextTreeUndo.cs
- Debug.cs
- TypeContext.cs
- Win32Interop.cs
- TrackingProfileSerializer.cs
- DebuggerAttributes.cs
- RelatedPropertyManager.cs
- SafeNativeMethods.cs
- DbConnectionPoolCounters.cs
- EntityContainerEmitter.cs
- AutoResizedEvent.cs
- GridViewAutoFormat.cs
- FrameworkElementFactoryMarkupObject.cs
- DelegateSerializationHolder.cs
- FrameworkReadOnlyPropertyMetadata.cs
- ScriptRegistrationManager.cs
- AtomPub10CategoriesDocumentFormatter.cs
- TextDecorationUnitValidation.cs
- PageEventArgs.cs