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
- EventLogStatus.cs
- AppDomainProtocolHandler.cs
- ListItemParagraph.cs
- ConfigurationStrings.cs
- CodeMemberEvent.cs
- WebPartCollection.cs
- SQLUtility.cs
- UInt64Converter.cs
- FormViewInsertEventArgs.cs
- MaterializeFromAtom.cs
- MatchingStyle.cs
- StylusCollection.cs
- DropSource.cs
- HeaderedContentControl.cs
- BinaryObjectWriter.cs
- DataGridViewColumnStateChangedEventArgs.cs
- DisposableCollectionWrapper.cs
- TableCellCollection.cs
- ModelVisual3D.cs
- XmlStreamStore.cs
- SerialReceived.cs
- CategoriesDocument.cs
- DetailsViewDeletedEventArgs.cs
- DoubleAnimationClockResource.cs
- RequestCache.cs
- ErrorStyle.cs
- SubstitutionDesigner.cs
- CapabilitiesUse.cs
- CorrelationToken.cs
- TypeInfo.cs
- SqlCharStream.cs
- WithStatement.cs
- XmlDeclaration.cs
- SByteStorage.cs
- LinearKeyFrames.cs
- MultitargetingHelpers.cs
- AddInSegmentDirectoryNotFoundException.cs
- IsolatedStorageFile.cs
- XmlValidatingReader.cs
- CodeTypeReferenceCollection.cs
- CodeAccessSecurityEngine.cs
- ContextDataSource.cs
- SecureEnvironment.cs
- XmlCustomFormatter.cs
- ConfigXmlWhitespace.cs
- CacheDependency.cs
- RangeValueProviderWrapper.cs
- DataServiceHostFactory.cs
- NameValueSectionHandler.cs
- MailWriter.cs
- LayoutSettings.cs
- UserControlCodeDomTreeGenerator.cs
- Pointer.cs
- GeometryModel3D.cs
- XpsColorContext.cs
- TryExpression.cs
- CallbackHandler.cs
- ScriptResourceAttribute.cs
- BinaryWriter.cs
- CounterSet.cs
- DataStorage.cs
- CharacterMetrics.cs
- CompiledRegexRunner.cs
- MissingFieldException.cs
- DelegatingStream.cs
- Certificate.cs
- SelectionWordBreaker.cs
- DurationConverter.cs
- NavigationCommands.cs
- ControlBuilderAttribute.cs
- RtfControls.cs
- UTF32Encoding.cs
- File.cs
- CopyAction.cs
- dsa.cs
- CorrelationManager.cs
- PointAnimationUsingKeyFrames.cs
- DefaultParameterValueAttribute.cs
- BaseConfigurationRecord.cs
- AssemblyAttributes.cs
- DataGridViewRowsAddedEventArgs.cs
- XmlTextAttribute.cs
- PipelineModuleStepContainer.cs
- BindingMAnagerBase.cs
- ListViewItemSelectionChangedEvent.cs
- ListViewCancelEventArgs.cs
- Formatter.cs
- XmlNotation.cs
- MinMaxParagraphWidth.cs
- MethodBody.cs
- FormatSettings.cs
- HttpInputStream.cs
- SiteMapNodeItem.cs
- WorkflowMarkupElementEventArgs.cs
- DataControlFieldCell.cs
- WrappedIUnknown.cs
- UnsafeNetInfoNativeMethods.cs
- _CommandStream.cs
- ConfigXmlComment.cs
- DefaultBinder.cs