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
- OdbcHandle.cs
- EtwTrace.cs
- SqlBulkCopyColumnMappingCollection.cs
- SqlLiftIndependentRowExpressions.cs
- TransactionState.cs
- DataServiceRequestOfT.cs
- documentsequencetextpointer.cs
- ConfigurationLocationCollection.cs
- MsmqIntegrationOutputChannel.cs
- SafeIUnknown.cs
- PersonalizationStateQuery.cs
- IndentTextWriter.cs
- PathData.cs
- ProfileSection.cs
- GridView.cs
- SerializableTypeCodeDomSerializer.cs
- GridEntryCollection.cs
- WebPartPersonalization.cs
- PublisherMembershipCondition.cs
- DefaultShape.cs
- FontClient.cs
- CalendarTable.cs
- SqlNotificationRequest.cs
- Converter.cs
- XPathDocument.cs
- shaperfactoryquerycachekey.cs
- RequestCachingSection.cs
- AdapterDictionary.cs
- NotifyParentPropertyAttribute.cs
- TransformerTypeCollection.cs
- RequestResponse.cs
- DataGridViewCellCollection.cs
- ListBoxAutomationPeer.cs
- ResolvedKeyFrameEntry.cs
- SequentialOutput.cs
- FileDialog_Vista_Interop.cs
- CounterCreationDataConverter.cs
- HandledEventArgs.cs
- AssertSection.cs
- SynthesizerStateChangedEventArgs.cs
- StrokeCollection2.cs
- ProjectionPruner.cs
- externdll.cs
- VisualProxy.cs
- Comparer.cs
- ExpressionBuilderCollection.cs
- ValidationErrorInfo.cs
- DataGridState.cs
- DefaultObjectSerializer.cs
- TypeToArgumentTypeConverter.cs
- arclist.cs
- LoginCancelEventArgs.cs
- XmlSchemaAttribute.cs
- ViewBox.cs
- SystemDiagnosticsSection.cs
- Metafile.cs
- InputLanguageProfileNotifySink.cs
- FormViewInsertedEventArgs.cs
- ExpressionWriter.cs
- Endpoint.cs
- KerberosSecurityTokenProvider.cs
- ParameterToken.cs
- diagnosticsswitches.cs
- CalculatedColumn.cs
- ActiveXSite.cs
- RSACryptoServiceProvider.cs
- StringCollection.cs
- ParserHooks.cs
- FolderNameEditor.cs
- TdsParserSafeHandles.cs
- XmlTextReaderImplHelpers.cs
- ServiceNameCollection.cs
- ClaimSet.cs
- XsltException.cs
- WorkItem.cs
- SeekStoryboard.cs
- TextProperties.cs
- ColorConvertedBitmap.cs
- SchemaNotation.cs
- User.cs
- List.cs
- ScriptServiceAttribute.cs
- DataSet.cs
- DtrList.cs
- FindRequestContext.cs
- MethodSignatureGenerator.cs
- DetailsViewUpdatedEventArgs.cs
- KeyConstraint.cs
- CodeGotoStatement.cs
- PriorityBinding.cs
- ParameterElementCollection.cs
- XmlNodeChangedEventArgs.cs
- StatusBarPanel.cs
- FixedSOMGroup.cs
- AggregateNode.cs
- ChannelSettingsElement.cs
- keycontainerpermission.cs
- ProxyBuilder.cs
- HandlerBase.cs
- HostedElements.cs