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
- DelayedRegex.cs
- Size3D.cs
- FormatterConverter.cs
- Positioning.cs
- ConnectionProviderAttribute.cs
- OrderablePartitioner.cs
- PageWrapper.cs
- WebPartDescription.cs
- MenuEventArgs.cs
- ChannelAcceptor.cs
- WebControlAdapter.cs
- DbCommandDefinition.cs
- ParallelRangeManager.cs
- OracleParameterCollection.cs
- TraceListeners.cs
- SmtpMail.cs
- EditorPartChrome.cs
- XmlWhitespace.cs
- AbandonedMutexException.cs
- BaseCAMarshaler.cs
- HttpWriter.cs
- JsonReader.cs
- OleDbParameter.cs
- RemotingException.cs
- MessageQueueInstaller.cs
- UnaryExpression.cs
- TypefaceMetricsCache.cs
- Attributes.cs
- Int64Storage.cs
- DBParameter.cs
- EventSinkHelperWriter.cs
- _AutoWebProxyScriptWrapper.cs
- StorageMappingItemCollection.cs
- ClientProxyGenerator.cs
- DiscoveryClientReferences.cs
- DeleteMemberBinder.cs
- StringValueConverter.cs
- TypeConverter.cs
- ConfigurationManager.cs
- GeneralTransformGroup.cs
- LinearGradientBrush.cs
- NewExpression.cs
- TreeViewDataItemAutomationPeer.cs
- ResolveDuplexAsyncResult.cs
- NumericExpr.cs
- EffectiveValueEntry.cs
- JsonServiceDocumentSerializer.cs
- UnaryOperationBinder.cs
- PathFigureCollectionConverter.cs
- RemoteHelper.cs
- ObjectDataSourceMethodEventArgs.cs
- IsolationInterop.cs
- NotImplementedException.cs
- Preprocessor.cs
- SQLDouble.cs
- CqlBlock.cs
- TraceFilter.cs
- RequestCachePolicyConverter.cs
- FormatterServicesNoSerializableCheck.cs
- IChannel.cs
- CloudCollection.cs
- StrongNameUtility.cs
- DbSetClause.cs
- AsyncOperation.cs
- ConfigXmlSignificantWhitespace.cs
- LinearQuaternionKeyFrame.cs
- loginstatus.cs
- SystemWebCachingSectionGroup.cs
- InputReport.cs
- DirectoryObjectSecurity.cs
- OperationPickerDialog.cs
- StrokeCollection.cs
- EntityRecordInfo.cs
- Utilities.cs
- ListViewTableRow.cs
- CodeGotoStatement.cs
- COAUTHINFO.cs
- FrameworkPropertyMetadata.cs
- OutputScopeManager.cs
- TimersDescriptionAttribute.cs
- RegexCapture.cs
- SqlException.cs
- UnsafeNativeMethodsPenimc.cs
- Hyperlink.cs
- TripleDES.cs
- TextFormatterImp.cs
- XmlSecureResolver.cs
- GridViewRow.cs
- _FtpDataStream.cs
- GroupBoxAutomationPeer.cs
- UnconditionalPolicy.cs
- HtmlControlPersistable.cs
- PackWebRequestFactory.cs
- WindowsFormsHostAutomationPeer.cs
- ListViewUpdatedEventArgs.cs
- PackageDigitalSignatureManager.cs
- HttpCachePolicyWrapper.cs
- RenamedEventArgs.cs
- Pipe.cs
- DataControlFieldTypeEditor.cs