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
- ClipboardData.cs
- ProfileServiceManager.cs
- OracleException.cs
- MsmqInputMessage.cs
- TypeToStringValueConverter.cs
- DoubleAnimation.cs
- TypedServiceChannelBuilder.cs
- Vector.cs
- UserControl.cs
- ChtmlTextWriter.cs
- CssStyleCollection.cs
- OperationFormatter.cs
- UnsafeNativeMethods.cs
- SiteMapNodeItem.cs
- XmlAnyAttributeAttribute.cs
- RadioButtonList.cs
- ArrayTypeMismatchException.cs
- SQLInt64.cs
- OrderedParallelQuery.cs
- ExtractorMetadata.cs
- datacache.cs
- Matrix3D.cs
- BinaryObjectReader.cs
- GridPattern.cs
- sqlinternaltransaction.cs
- DesignerActionVerbList.cs
- Screen.cs
- Style.cs
- CodeArrayIndexerExpression.cs
- CodeTypeReferenceExpression.cs
- NetSectionGroup.cs
- HandledEventArgs.cs
- ListSourceHelper.cs
- BufferBuilder.cs
- StorageRoot.cs
- SafeRightsManagementHandle.cs
- DataServiceStreamProviderWrapper.cs
- BuildResult.cs
- EventItfInfo.cs
- PenThread.cs
- PopupControlService.cs
- GuidTagList.cs
- WebPartChrome.cs
- TextParagraphProperties.cs
- BindingListCollectionView.cs
- SurrogateDataContract.cs
- OdbcCommand.cs
- MasterPageParser.cs
- DataListItem.cs
- CompilerLocalReference.cs
- AssemblyAssociatedContentFileAttribute.cs
- SplineKeyFrames.cs
- ConfigDefinitionUpdates.cs
- PageAdapter.cs
- WebSysDescriptionAttribute.cs
- ReadOnlyDataSource.cs
- DateTimeFormatInfo.cs
- TemplatedEditableDesignerRegion.cs
- SchemaInfo.cs
- XmlAtomicValue.cs
- TemplateKey.cs
- StreamWriter.cs
- _BaseOverlappedAsyncResult.cs
- VirtualDirectoryMapping.cs
- DateTimeConverter.cs
- GroupDescription.cs
- VisualBasicHelper.cs
- querybuilder.cs
- GeneralTransform.cs
- DataSourceCache.cs
- Setter.cs
- MasterPageCodeDomTreeGenerator.cs
- AutomationPropertyInfo.cs
- IteratorFilter.cs
- SqlEnums.cs
- BinaryUtilClasses.cs
- PrincipalPermissionMode.cs
- WindowsPrincipal.cs
- DefaultTraceListener.cs
- PtsCache.cs
- CodeAttributeArgumentCollection.cs
- MarkupCompilePass1.cs
- DictionaryManager.cs
- TextTreeUndo.cs
- WebPartEditorApplyVerb.cs
- UnmanagedMemoryStreamWrapper.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- WorkItem.cs
- Size.cs
- XhtmlTextWriter.cs
- ToolStripDropDownMenu.cs
- TextFragmentEngine.cs
- TextAnchor.cs
- NamespaceMapping.cs
- ComplexType.cs
- VectorCollection.cs
- FieldMetadata.cs
- ScrollBarRenderer.cs
- CacheForPrimitiveTypes.cs
- PropertyEmitterBase.cs