Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Misc / CompatibleIComparer.cs / 1305376 / CompatibleIComparer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * This class is used to create hashcodes that are Everett Compatible. * * Copyright (c) 2004 Microsoft Corporation */ namespace System.Collections.Specialized { using Microsoft.Win32; using System.Collections; using System.Runtime.Serialization; using System.Globalization; internal class BackCompatibleStringComparer : IEqualityComparer { static internal IEqualityComparer Default = new BackCompatibleStringComparer(); internal BackCompatibleStringComparer() { } //This comes from VS# 434837 and is specifically written to get backcompat public static int GetHashCode(string obj) { unsafe { fixed (char* src = obj) { int hash = 5381; int c; char* szStr = src; while ((c = *szStr) != 0) { hash = ((hash << 5) + hash) ^ c; ++szStr; } return hash; } } } bool IEqualityComparer.Equals(Object a, Object b) { return Object.Equals(a, b); } public virtual int GetHashCode(Object o) { String obj = o as string; if (obj == null) { return o.GetHashCode(); } return BackCompatibleStringComparer.GetHashCode(obj); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * This class is used to create hashcodes that are Everett Compatible. * * Copyright (c) 2004 Microsoft Corporation */ namespace System.Collections.Specialized { using Microsoft.Win32; using System.Collections; using System.Runtime.Serialization; using System.Globalization; internal class BackCompatibleStringComparer : IEqualityComparer { static internal IEqualityComparer Default = new BackCompatibleStringComparer(); internal BackCompatibleStringComparer() { } //This comes from VS# 434837 and is specifically written to get backcompat public static int GetHashCode(string obj) { unsafe { fixed (char* src = obj) { int hash = 5381; int c; char* szStr = src; while ((c = *szStr) != 0) { hash = ((hash << 5) + hash) ^ c; ++szStr; } return hash; } } } bool IEqualityComparer.Equals(Object a, Object b) { return Object.Equals(a, b); } public virtual int GetHashCode(Object o) { String obj = o as string; if (obj == null) { return o.GetHashCode(); } return BackCompatibleStringComparer.GetHashCode(obj); } } } // 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
- WeakReference.cs
- Span.cs
- SetStoryboardSpeedRatio.cs
- EnterpriseServicesHelper.cs
- ContainerParagraph.cs
- ReferencedType.cs
- EntityViewGenerationConstants.cs
- _DigestClient.cs
- Menu.cs
- CroppedBitmap.cs
- OdbcErrorCollection.cs
- SMSvcHost.cs
- OleDbTransaction.cs
- securestring.cs
- SrgsRule.cs
- MasterPageCodeDomTreeGenerator.cs
- FixedFindEngine.cs
- TextRunProperties.cs
- ZoneLinkButton.cs
- AutoScrollHelper.cs
- AdRotator.cs
- MessageBox.cs
- DataObjectPastingEventArgs.cs
- OuterGlowBitmapEffect.cs
- Privilege.cs
- MinimizableAttributeTypeConverter.cs
- SingleResultAttribute.cs
- Clause.cs
- WMICapabilities.cs
- NTAccount.cs
- DesignerAutoFormat.cs
- DBBindings.cs
- StreamSecurityUpgradeProvider.cs
- SqlDataSourceStatusEventArgs.cs
- DefaultTypeArgumentAttribute.cs
- ConnectionInterfaceCollection.cs
- CodeSubDirectory.cs
- Attachment.cs
- WebPartDescriptionCollection.cs
- GeneralTransformGroup.cs
- EpmContentDeSerializer.cs
- XPathParser.cs
- WindowCollection.cs
- DispatcherProcessingDisabled.cs
- FrameworkContextData.cs
- AppendHelper.cs
- NamespaceQuery.cs
- SystemColors.cs
- WebPartZoneBase.cs
- safemediahandle.cs
- ExpressionBindings.cs
- KeyTime.cs
- ColorTranslator.cs
- MarshalByValueComponent.cs
- glyphs.cs
- PointConverter.cs
- PagesChangedEventArgs.cs
- BinaryUtilClasses.cs
- MarkedHighlightComponent.cs
- SessionStateModule.cs
- TextSelection.cs
- InfoCardCryptoHelper.cs
- DifferencingCollection.cs
- GuidConverter.cs
- UIPermission.cs
- Metafile.cs
- TransportChannelFactory.cs
- DataGrid.cs
- StyleSelector.cs
- BamlResourceDeserializer.cs
- XhtmlTextWriter.cs
- MetaType.cs
- Size.cs
- ListBindingHelper.cs
- EventLogTraceListener.cs
- CommandHelpers.cs
- ThreadStateException.cs
- Parameter.cs
- XmlQualifiedNameTest.cs
- HwndStylusInputProvider.cs
- TileBrush.cs
- GACIdentityPermission.cs
- EnvelopedSignatureTransform.cs
- XsdDateTime.cs
- ToolStripComboBox.cs
- SlotInfo.cs
- TypedReference.cs
- NameTable.cs
- WorkflowQueue.cs
- ContractMapping.cs
- ResizeGrip.cs
- EventLogEntry.cs
- ExtendedProtectionPolicy.cs
- XXXOnTypeBuilderInstantiation.cs
- TransformerConfigurationWizardBase.cs
- OneOfTypeConst.cs
- RawStylusInputCustomDataList.cs
- XmlSchemaCompilationSettings.cs
- PreloadedPackages.cs
- CertificateManager.cs