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
- ExpressionNormalizer.cs
- control.ime.cs
- SQLGuid.cs
- X509ScopedServiceCertificateElementCollection.cs
- BrowserCapabilitiesCompiler.cs
- Application.cs
- PlanCompiler.cs
- SqlDependencyUtils.cs
- ConfigurationProperty.cs
- Condition.cs
- CodeSubDirectory.cs
- InternalDispatchObject.cs
- CapabilitiesSection.cs
- SubqueryTrackingVisitor.cs
- TypefaceMap.cs
- panel.cs
- MobileUserControl.cs
- PrivacyNoticeElement.cs
- QuaternionValueSerializer.cs
- AvTraceDetails.cs
- XamlToRtfWriter.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- ProjectionCamera.cs
- SecuritySessionClientSettings.cs
- SettingsSection.cs
- Base64Decoder.cs
- ObjectHelper.cs
- ColumnCollection.cs
- FunctionCommandText.cs
- XsltSettings.cs
- ProfilePropertyMetadata.cs
- TransformerInfo.cs
- MD5CryptoServiceProvider.cs
- Authorization.cs
- PersonalizablePropertyEntry.cs
- WorkflowViewElement.cs
- ScriptMethodAttribute.cs
- DynamicDataRouteHandler.cs
- MDIClient.cs
- ListSourceHelper.cs
- SqlDataSourceAdvancedOptionsForm.cs
- StatusCommandUI.cs
- CommentEmitter.cs
- SystemSounds.cs
- MetadataProperty.cs
- RegexCompilationInfo.cs
- FrameworkElementAutomationPeer.cs
- StyleXamlTreeBuilder.cs
- Rect3DConverter.cs
- ProcessProtocolHandler.cs
- SequenceDesigner.xaml.cs
- HScrollBar.cs
- MethodCallConverter.cs
- SyndicationDeserializer.cs
- sqlstateclientmanager.cs
- ServicePerformanceCounters.cs
- ClientCultureInfo.cs
- SafeProcessHandle.cs
- XmlTextReaderImpl.cs
- XamlSerializationHelper.cs
- WeakHashtable.cs
- SoundPlayer.cs
- DoubleStorage.cs
- MembershipUser.cs
- ProtocolsConfigurationEntry.cs
- ISAPIApplicationHost.cs
- OperandQuery.cs
- DbDeleteCommandTree.cs
- Mappings.cs
- VisualStyleRenderer.cs
- StateMachineExecutionState.cs
- StatusCommandUI.cs
- EventHandlers.cs
- KeyNameIdentifierClause.cs
- WhitespaceRuleReader.cs
- XmlTextWriter.cs
- basecomparevalidator.cs
- InvokeHandlers.cs
- TagPrefixInfo.cs
- ImageSourceTypeConverter.cs
- DataGridViewLinkCell.cs
- WindowsTitleBar.cs
- SmtpNegotiateAuthenticationModule.cs
- UseManagedPresentationBindingElementImporter.cs
- PrintDialog.cs
- MetadataSource.cs
- PolicyManager.cs
- RadioButton.cs
- SmtpReplyReader.cs
- DataSourceControlBuilder.cs
- NameObjectCollectionBase.cs
- SiteMembershipCondition.cs
- _NTAuthentication.cs
- UpdateTranslator.cs
- Vector3DCollectionConverter.cs
- XpsFilter.cs
- ContourSegment.cs
- PkcsMisc.cs
- OperationCanceledException.cs
- ConstraintEnumerator.cs