Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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. // //----------------------------------------------------------------------------- /* * 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
- DataContractSet.cs
- XmlIgnoreAttribute.cs
- TypeDescriptionProvider.cs
- BitFlagsGenerator.cs
- CaseCqlBlock.cs
- DecimalAnimationBase.cs
- XmlAttribute.cs
- TextParentUndoUnit.cs
- SplineKeyFrames.cs
- Stopwatch.cs
- DynamicValidatorEventArgs.cs
- TextEditorTyping.cs
- ProjectionCamera.cs
- ViewStateException.cs
- BitmapFrameDecode.cs
- BindingsSection.cs
- CachingHintValidation.cs
- InputMethodStateTypeInfo.cs
- X509ChainElement.cs
- ReadOnlyAttribute.cs
- HwndHostAutomationPeer.cs
- DynamicDataResources.Designer.cs
- TextParaClient.cs
- Section.cs
- WindowsTokenRoleProvider.cs
- EdmComplexTypeAttribute.cs
- WebChannelFactory.cs
- ChainOfResponsibility.cs
- OperationAbortedException.cs
- DataViewManagerListItemTypeDescriptor.cs
- DataGridViewIntLinkedList.cs
- LookupBindingPropertiesAttribute.cs
- Point3DAnimationBase.cs
- Point.cs
- URLEditor.cs
- SafeSecurityHandles.cs
- EntryIndex.cs
- Matrix.cs
- Constants.cs
- XmlSchemaChoice.cs
- ILGenerator.cs
- DeobfuscatingStream.cs
- SoapElementAttribute.cs
- KeysConverter.cs
- NativeWindow.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- RemoveFromCollection.cs
- DataAdapter.cs
- RegularExpressionValidator.cs
- baseaxisquery.cs
- SystemIPInterfaceProperties.cs
- AutoGeneratedField.cs
- ZipIOCentralDirectoryFileHeader.cs
- Int32.cs
- GenerateScriptTypeAttribute.cs
- Int64.cs
- ViewPort3D.cs
- HeaderedItemsControl.cs
- StandardCommands.cs
- TdsParserStateObject.cs
- KeyboardDevice.cs
- BounceEase.cs
- TypeConvertions.cs
- GCHandleCookieTable.cs
- DataGridTableCollection.cs
- CalendarDateRangeChangingEventArgs.cs
- EntityDataReader.cs
- ISFTagAndGuidCache.cs
- assertwrapper.cs
- TextHidden.cs
- XsdCachingReader.cs
- Zone.cs
- MarkedHighlightComponent.cs
- HttpCachePolicy.cs
- AutomationIdentifier.cs
- ScriptResourceInfo.cs
- Condition.cs
- RenderOptions.cs
- NativeMethods.cs
- WarningException.cs
- Mapping.cs
- CodeDOMUtility.cs
- Rule.cs
- TdsParameterSetter.cs
- DecimalConstantAttribute.cs
- MergeExecutor.cs
- QualifiedCellIdBoolean.cs
- TemplateAction.cs
- DataGridViewIntLinkedList.cs
- ToolStripButton.cs
- WebPartDeleteVerb.cs
- ReflectionPermission.cs
- ModifiableIteratorCollection.cs
- BooleanProjectedSlot.cs
- LinqDataSourceContextEventArgs.cs
- InstanceHandleReference.cs
- RemotingServices.cs
- WriteTimeStream.cs
- InternalDispatchObject.cs
- LayoutEvent.cs