Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Misc / CompatibleIComparer.cs / 1 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebRequest.cs
- GridView.cs
- NetworkAddressChange.cs
- ProcessModule.cs
- WebPageTraceListener.cs
- SiblingIterators.cs
- BindingBase.cs
- DocumentDesigner.cs
- MimeObjectFactory.cs
- Hex.cs
- CodeArrayIndexerExpression.cs
- Encoder.cs
- _ChunkParse.cs
- SortAction.cs
- Odbc32.cs
- TlsnegoTokenAuthenticator.cs
- InputProcessorProfilesLoader.cs
- XmlValueConverter.cs
- HwndMouseInputProvider.cs
- SparseMemoryStream.cs
- TrackingProfile.cs
- BlurBitmapEffect.cs
- WorkflowWebService.cs
- DeviceSpecificChoice.cs
- RuntimeUtils.cs
- ControlCollection.cs
- NativeMethods.cs
- DataTablePropertyDescriptor.cs
- RawKeyboardInputReport.cs
- TypeLibConverter.cs
- DataGridViewCellConverter.cs
- RectangleHotSpot.cs
- DbConnectionPoolGroupProviderInfo.cs
- TrackingRecordPreFilter.cs
- CombinedGeometry.cs
- SoapEnvelopeProcessingElement.cs
- ListViewUpdatedEventArgs.cs
- CompensationExtension.cs
- PropertyStore.cs
- MapPathBasedVirtualPathProvider.cs
- MatrixAnimationUsingKeyFrames.cs
- Documentation.cs
- SinglePageViewer.cs
- CompoundFileReference.cs
- CodeCompileUnit.cs
- GeneralTransform3D.cs
- WrappedOptions.cs
- GeneralTransform3DGroup.cs
- ActionMismatchAddressingException.cs
- EnumerableRowCollectionExtensions.cs
- VersionPair.cs
- JsonWriter.cs
- RectAnimationClockResource.cs
- loginstatus.cs
- UniqueSet.cs
- PrinterSettings.cs
- ScriptManagerProxy.cs
- ProfileParameter.cs
- DrawingContextDrawingContextWalker.cs
- __TransparentProxy.cs
- GradientStop.cs
- LocalizationCodeDomSerializer.cs
- RtfNavigator.cs
- ToolStripPanelDesigner.cs
- SqlBooleanMismatchVisitor.cs
- ReferenceConverter.cs
- ApplicationGesture.cs
- WriteLineDesigner.xaml.cs
- SrgsText.cs
- PersonalizationStateInfo.cs
- EdmSchemaError.cs
- ScriptResourceAttribute.cs
- FixedSOMPageElement.cs
- DXD.cs
- XsdBuildProvider.cs
- BaseConfigurationRecord.cs
- SpAudioStreamWrapper.cs
- DataKeyCollection.cs
- SystemTcpConnection.cs
- NativeActivity.cs
- ImageKeyConverter.cs
- WrappedIUnknown.cs
- Graphics.cs
- SQLByte.cs
- Activity.cs
- X509InitiatorCertificateServiceElement.cs
- LocalizationParserHooks.cs
- ListControl.cs
- QueryComponents.cs
- SafeNativeMethods.cs
- ToolStripItemClickedEventArgs.cs
- BitmapData.cs
- XsltArgumentList.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- Quaternion.cs
- WebPartAddingEventArgs.cs
- RangeBaseAutomationPeer.cs
- NotFiniteNumberException.cs
- SafeFileMapViewHandle.cs
- HttpCookiesSection.cs