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
- StyleXamlParser.cs
- Maps.cs
- ComplexType.cs
- OneOfConst.cs
- SQLDecimalStorage.cs
- BindableTemplateBuilder.cs
- DragAssistanceManager.cs
- TraceHwndHost.cs
- ValuePatternIdentifiers.cs
- BaseCAMarshaler.cs
- FileSecurity.cs
- WriterOutput.cs
- PackagePartCollection.cs
- InstanceOwnerException.cs
- XmlDeclaration.cs
- RegexCompiler.cs
- MembershipValidatePasswordEventArgs.cs
- RequestValidator.cs
- DropSource.cs
- Adorner.cs
- ListControlDesigner.cs
- EventProvider.cs
- OdbcParameterCollection.cs
- XsltException.cs
- AttributeQuery.cs
- ColumnHeader.cs
- InputLanguageCollection.cs
- CombinedHttpChannel.cs
- ListViewGroup.cs
- HuffmanTree.cs
- BookmarkEventArgs.cs
- TextServicesCompartmentContext.cs
- AuthorizationRule.cs
- ModelUtilities.cs
- TypeConverterHelper.cs
- Empty.cs
- FixedTextPointer.cs
- FontStyles.cs
- ToolStripSettings.cs
- TextSelectionHelper.cs
- ButtonPopupAdapter.cs
- SqlDependencyListener.cs
- Unit.cs
- SystemDiagnosticsSection.cs
- MemberDomainMap.cs
- Column.cs
- DefaultAssemblyResolver.cs
- ScrollPattern.cs
- Version.cs
- JoinCqlBlock.cs
- WebReferencesBuildProvider.cs
- ByteAnimationBase.cs
- CommandLibraryHelper.cs
- DefaultAutoFieldGenerator.cs
- RadioButtonAutomationPeer.cs
- PropertyManager.cs
- CaretElement.cs
- FullTextState.cs
- _LocalDataStoreMgr.cs
- DataSourceXmlSubItemAttribute.cs
- Popup.cs
- Point3D.cs
- ImageFormat.cs
- DbCommandTree.cs
- GlyphInfoList.cs
- NGCSerializationManagerAsync.cs
- ProxyWebPartManager.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- TypeLoadException.cs
- FileLogRecordHeader.cs
- VBIdentifierDesigner.xaml.cs
- Attributes.cs
- ListenerAdapterBase.cs
- CaretElement.cs
- RandomNumberGenerator.cs
- MaxSessionCountExceededException.cs
- WebPartDisplayModeEventArgs.cs
- FileAccessException.cs
- Operator.cs
- login.cs
- PerformanceCounter.cs
- ToolStripPanelSelectionGlyph.cs
- TextEditorParagraphs.cs
- WebPartTransformerAttribute.cs
- HandleExceptionArgs.cs
- ObjectDisposedException.cs
- smtppermission.cs
- EditorZoneDesigner.cs
- ComboBoxItem.cs
- TextElementEditingBehaviorAttribute.cs
- CodeTypeReferenceCollection.cs
- Int32CAMarshaler.cs
- ExpressionLexer.cs
- PenContexts.cs
- BypassElement.cs
- ScriptingAuthenticationServiceSection.cs
- __Error.cs
- HandleCollector.cs
- InsufficientExecutionStackException.cs
- followingsibling.cs