Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UIElement.cs
- StreamHelper.cs
- RenderData.cs
- Figure.cs
- LockRecursionException.cs
- LongMinMaxAggregationOperator.cs
- Variable.cs
- PersonalizableTypeEntry.cs
- VisualStateChangedEventArgs.cs
- OdbcReferenceCollection.cs
- SchemaManager.cs
- Msec.cs
- CodeDOMProvider.cs
- Script.cs
- RequestBringIntoViewEventArgs.cs
- ClientTarget.cs
- ContentPathSegment.cs
- KeyedPriorityQueue.cs
- OciLobLocator.cs
- TimeStampChecker.cs
- ContractMethodParameterInfo.cs
- CatalogPartChrome.cs
- XmlCompatibilityReader.cs
- IListConverters.cs
- entitydatasourceentitysetnameconverter.cs
- RedBlackList.cs
- ValueUtilsSmi.cs
- StopStoryboard.cs
- PersonalizationProviderCollection.cs
- ActivatedMessageQueue.cs
- SupportsEventValidationAttribute.cs
- XmlObjectSerializer.cs
- FileDialog.cs
- DataGridViewAccessibleObject.cs
- WpfMemberInvoker.cs
- ProjectionPathSegment.cs
- NavigationFailedEventArgs.cs
- HashSetEqualityComparer.cs
- UrlUtility.cs
- TextDocumentView.cs
- ConnectionConsumerAttribute.cs
- Parser.cs
- TextOptionsInternal.cs
- XslVisitor.cs
- BaseDataListDesigner.cs
- DataBindingCollection.cs
- TabPage.cs
- DataTrigger.cs
- XmlnsCompatibleWithAttribute.cs
- ConstructorBuilder.cs
- WCFServiceClientProxyGenerator.cs
- MediaContext.cs
- HealthMonitoringSection.cs
- BamlVersionHeader.cs
- AlignmentYValidation.cs
- VersionPair.cs
- IDQuery.cs
- StreamUpdate.cs
- PersistenceTypeAttribute.cs
- KnownTypesHelper.cs
- PersonalizationDictionary.cs
- ProviderConnectionPoint.cs
- WorkerRequest.cs
- UnsafeNativeMethodsPenimc.cs
- ToolStripContextMenu.cs
- WebServiceFault.cs
- FixedSOMLineCollection.cs
- SqlDataSourceCommandEventArgs.cs
- ContentPathSegment.cs
- RandomNumberGenerator.cs
- Quaternion.cs
- ProfileService.cs
- XamlUtilities.cs
- filewebrequest.cs
- WebPartsPersonalization.cs
- SchemaImporter.cs
- Constants.cs
- ReverseInheritProperty.cs
- TraceContext.cs
- EntityRecordInfo.cs
- QilStrConcat.cs
- TrackingStringDictionary.cs
- Activity.cs
- PKCS1MaskGenerationMethod.cs
- ScriptingAuthenticationServiceSection.cs
- OdbcTransaction.cs
- DataGridViewTextBoxCell.cs
- _AutoWebProxyScriptEngine.cs
- BorderSidesEditor.cs
- SoundPlayer.cs
- XAMLParseException.cs
- RelatedPropertyManager.cs
- XslCompiledTransform.cs
- VectorConverter.cs
- DesignerProperties.cs
- ValueChangedEventManager.cs
- HostExecutionContextManager.cs
- Quaternion.cs
- TextRangeEditLists.cs
- NavigationEventArgs.cs