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
- StickyNoteAnnotations.cs
- ConstraintCollection.cs
- RectangleConverter.cs
- TextBoxAutoCompleteSourceConverter.cs
- DefaultObjectSerializer.cs
- RenderCapability.cs
- ObjectSet.cs
- TextRunProperties.cs
- QueryInterceptorAttribute.cs
- DiagnosticStrings.cs
- PropertyChangeTracker.cs
- ImageUrlEditor.cs
- UIElementCollection.cs
- PersonalizationStateQuery.cs
- LocatorPart.cs
- OwnerDrawPropertyBag.cs
- Rfc2898DeriveBytes.cs
- ContentIterators.cs
- Matrix3D.cs
- LambdaCompiler.Generated.cs
- ButtonChrome.cs
- WebPartConnectVerb.cs
- ListControl.cs
- DataPagerCommandEventArgs.cs
- HScrollBar.cs
- TypePresenter.xaml.cs
- ClaimComparer.cs
- ConfigurationElement.cs
- TaskFileService.cs
- NullEntityWrapper.cs
- WebPartAddingEventArgs.cs
- DataObjectSettingDataEventArgs.cs
- OracleRowUpdatingEventArgs.cs
- OuterGlowBitmapEffect.cs
- InlineObject.cs
- DataTable.cs
- DeferredElementTreeState.cs
- DefaultTextStoreTextComposition.cs
- ConnectionManagementSection.cs
- BindingExpression.cs
- SmiRecordBuffer.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DbFunctionCommandTree.cs
- ExeContext.cs
- PixelShader.cs
- HttpWebRequestElement.cs
- InstanceKeyCollisionException.cs
- TextElementEditingBehaviorAttribute.cs
- OleDbConnectionInternal.cs
- Point4D.cs
- XmlSchemaValidator.cs
- FilteredReadOnlyMetadataCollection.cs
- TableItemPattern.cs
- ImageField.cs
- AssemblyCache.cs
- TextParaLineResult.cs
- LayoutTableCell.cs
- XmlReflectionImporter.cs
- SecurityTokenSerializer.cs
- PageAsyncTask.cs
- ConfigXmlReader.cs
- Helpers.cs
- DynamicRouteExpression.cs
- MatrixTransform3D.cs
- SystemTcpStatistics.cs
- UnmanagedMarshal.cs
- SafeCryptoHandles.cs
- KeyValuePair.cs
- GlobalizationSection.cs
- Lasso.cs
- SoapAttributeAttribute.cs
- BamlBinaryWriter.cs
- Nullable.cs
- UnaryOperationBinder.cs
- ContextBase.cs
- ToolStripItemImageRenderEventArgs.cs
- BindingContext.cs
- StrokeCollection2.cs
- UserControlBuildProvider.cs
- DesignerDataView.cs
- WebPartEditorOkVerb.cs
- ListParagraph.cs
- HtmlImage.cs
- FormsAuthenticationUser.cs
- RequestCachePolicy.cs
- RegularExpressionValidator.cs
- DataGridViewLinkCell.cs
- Baml2006ReaderFrame.cs
- ClientOperationFormatterProvider.cs
- SqlClientWrapperSmiStream.cs
- ScrollChrome.cs
- XPathAncestorIterator.cs
- StrokeRenderer.cs
- BufferedResponseStream.cs
- Light.cs
- DesignTimeValidationFeature.cs
- FirstMatchCodeGroup.cs
- AssemblyCache.cs
- Funcletizer.cs
- ImageListImageEditor.cs