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
- peernodestatemanager.cs
- XPathBuilder.cs
- DataGridViewRowConverter.cs
- Helpers.cs
- OutputWindow.cs
- AsymmetricKeyExchangeFormatter.cs
- GradientSpreadMethodValidation.cs
- Trigger.cs
- bidPrivateBase.cs
- GridViewCommandEventArgs.cs
- Evidence.cs
- SHA256Cng.cs
- SiteMapPath.cs
- RectangleConverter.cs
- DurableOperationContext.cs
- CodeTypeReference.cs
- VersionedStreamOwner.cs
- LoadRetryAsyncResult.cs
- DataSourceHelper.cs
- EntryWrittenEventArgs.cs
- HttpCapabilitiesSectionHandler.cs
- ValidationHelper.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- SqlConnectionString.cs
- JsonCollectionDataContract.cs
- SoapServerMessage.cs
- SchemaType.cs
- InternalRelationshipCollection.cs
- IsolatedStorageFileStream.cs
- UseManagedPresentationBindingElementImporter.cs
- ReadOnlyMetadataCollection.cs
- DataControlPagerLinkButton.cs
- DataGridViewIntLinkedList.cs
- FormsAuthenticationCredentials.cs
- TextTreeText.cs
- StandardOleMarshalObject.cs
- X509CertificateClaimSet.cs
- FileLevelControlBuilderAttribute.cs
- SiteMapProvider.cs
- ItemsControl.cs
- WebPartTransformer.cs
- SmtpReplyReader.cs
- ConnectionConsumerAttribute.cs
- ModifierKeysConverter.cs
- XamlTreeBuilder.cs
- TableItemStyle.cs
- DefaultWorkflowTransactionService.cs
- AdornerLayer.cs
- XmlSchemaImporter.cs
- SqlCommandBuilder.cs
- RoleGroup.cs
- SurrogateChar.cs
- CodeTypeMember.cs
- EnglishPluralizationService.cs
- CustomValidator.cs
- UniqueEventHelper.cs
- ColorInterpolationModeValidation.cs
- ProfileService.cs
- FastEncoder.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- XhtmlBasicLabelAdapter.cs
- FrameworkElementFactory.cs
- Int32AnimationBase.cs
- Variant.cs
- RadioButtonFlatAdapter.cs
- ConfigsHelper.cs
- MergeFilterQuery.cs
- XmlDataDocument.cs
- SqlGenerator.cs
- versioninfo.cs
- Root.cs
- StyleModeStack.cs
- OrderByLifter.cs
- SemanticValue.cs
- SystemWebCachingSectionGroup.cs
- xsdvalidator.cs
- Function.cs
- Propagator.JoinPropagator.cs
- CollectionChange.cs
- SystemFonts.cs
- DelegateBodyWriter.cs
- MonitoringDescriptionAttribute.cs
- SamlNameIdentifierClaimResource.cs
- DataGridRow.cs
- CryptoConfig.cs
- SimpleTypesSurrogate.cs
- WeakReferenceEnumerator.cs
- ReachDocumentReferenceSerializerAsync.cs
- X509RawDataKeyIdentifierClause.cs
- BaseDataList.cs
- AvTraceDetails.cs
- DependencyObject.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ApplicationManager.cs
- RestClientProxyHandler.cs
- IntSecurity.cs
- ReadOnlyCollection.cs
- DataGridViewTextBoxCell.cs
- BamlWriter.cs