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
- HandleCollector.cs
- FontStretches.cs
- ReferenceSchema.cs
- CommandCollectionEditor.cs
- NumericExpr.cs
- SqlCacheDependency.cs
- FaultHandlingFilter.cs
- ProtocolsConfiguration.cs
- FastEncoderWindow.cs
- DesignerOptionService.cs
- DataSet.cs
- TypeConverterHelper.cs
- Decoder.cs
- DispatcherTimer.cs
- RoleGroup.cs
- InvokeBase.cs
- DBPropSet.cs
- SamlAttribute.cs
- HtmlInputSubmit.cs
- BitmapCodecInfoInternal.cs
- AssemblyResourceLoader.cs
- FormatterConverter.cs
- EasingKeyFrames.cs
- Separator.cs
- BinaryReader.cs
- GridErrorDlg.cs
- XmlDataProvider.cs
- DesignTimeHTMLTextWriter.cs
- XmlResolver.cs
- EventToken.cs
- ClientUtils.cs
- FormatControl.cs
- SortedDictionary.cs
- SystemIPAddressInformation.cs
- TraceSection.cs
- TimeStampChecker.cs
- SerializationSectionGroup.cs
- EdgeModeValidation.cs
- CodeTypeDelegate.cs
- DetailsViewInsertedEventArgs.cs
- ProfileParameter.cs
- MethodExecutor.cs
- RoutedEventValueSerializer.cs
- Size3DValueSerializer.cs
- FocusWithinProperty.cs
- MachineKey.cs
- DataGridViewColumn.cs
- Annotation.cs
- ImageSourceConverter.cs
- DataGridViewTopLeftHeaderCell.cs
- HttpModuleAction.cs
- NativeMethods.cs
- BreakRecordTable.cs
- SafeFindHandle.cs
- RadioButtonAutomationPeer.cs
- CSharpCodeProvider.cs
- MachinePropertyVariants.cs
- SchemaManager.cs
- DataObjectEventArgs.cs
- JsonWriter.cs
- SelectorAutomationPeer.cs
- DbConnectionPoolIdentity.cs
- HwndTarget.cs
- RequiredFieldValidator.cs
- CharacterString.cs
- BitmapEffectState.cs
- FunctionMappingTranslator.cs
- AttributeEmitter.cs
- DispatchWrapper.cs
- StreamMarshaler.cs
- ContractHandle.cs
- CodeMemberProperty.cs
- CellPartitioner.cs
- TextSpan.cs
- OrthographicCamera.cs
- designeractionlistschangedeventargs.cs
- CapacityStreamGeometryContext.cs
- TemplateControl.cs
- Int32AnimationBase.cs
- MethodBuilderInstantiation.cs
- TextAdaptor.cs
- Errors.cs
- baseaxisquery.cs
- EntityDesignerDataSourceView.cs
- WebServiceBindingAttribute.cs
- PeerChannelFactory.cs
- WebPartConnectionsConfigureVerb.cs
- InputBinder.cs
- XmlDocumentFieldSchema.cs
- XmlRawWriter.cs
- BooleanKeyFrameCollection.cs
- DrawingCollection.cs
- Message.cs
- OpacityConverter.cs
- XslAstAnalyzer.cs
- XmlParserContext.cs
- BrowserTree.cs
- MenuItemCollection.cs
- CheckBox.cs
- AnnotationResourceChangedEventArgs.cs