Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- XmlSignatureProperties.cs
- tooltip.cs
- TagMapInfo.cs
- IPHostEntry.cs
- HttpContextWrapper.cs
- PointCollectionConverter.cs
- SoapException.cs
- TimelineGroup.cs
- HMACSHA512.cs
- ByteKeyFrameCollection.cs
- FixedSOMFixedBlock.cs
- StylusEventArgs.cs
- DesignTimeDataBinding.cs
- GeometryHitTestParameters.cs
- EventProviderWriter.cs
- TextDocumentView.cs
- DefaultExpressionVisitor.cs
- SqlDesignerDataSourceView.cs
- _ChunkParse.cs
- XAMLParseException.cs
- SiteMapNodeCollection.cs
- ExceptionUtil.cs
- Asn1IntegerConverter.cs
- NaturalLanguageHyphenator.cs
- QueryCacheManager.cs
- FrameSecurityDescriptor.cs
- CommandValueSerializer.cs
- LocationReferenceEnvironment.cs
- codemethodreferenceexpression.cs
- CharAnimationUsingKeyFrames.cs
- XamlBuildTaskServices.cs
- PrimaryKeyTypeConverter.cs
- AdjustableArrowCap.cs
- Brushes.cs
- TraceData.cs
- filewebresponse.cs
- ListViewInsertedEventArgs.cs
- SpellerStatusTable.cs
- HandlerBase.cs
- TextEditorLists.cs
- InternalCache.cs
- MobileComponentEditorPage.cs
- DictionaryEditChange.cs
- TextEditorParagraphs.cs
- FactoryGenerator.cs
- IDQuery.cs
- StatusBarItemAutomationPeer.cs
- AmbientValueAttribute.cs
- HandlerBase.cs
- FixedLineResult.cs
- TransactionManager.cs
- SectionInformation.cs
- XmlReflectionMember.cs
- OwnerDrawPropertyBag.cs
- ParallelEnumerableWrapper.cs
- DropDownList.cs
- FilterableAttribute.cs
- DBConnection.cs
- _CookieModule.cs
- DataBinding.cs
- DesignerAutoFormat.cs
- Propagator.JoinPropagator.cs
- PartManifestEntry.cs
- DataSpaceManager.cs
- NumericUpDownAccelerationCollection.cs
- QilSortKey.cs
- ShapingWorkspace.cs
- ColorContextHelper.cs
- XmlTextWriter.cs
- RangeValidator.cs
- _OverlappedAsyncResult.cs
- SettingsProperty.cs
- HtmlSelect.cs
- RegistrySecurity.cs
- FormsAuthenticationTicket.cs
- DeclaredTypeValidatorAttribute.cs
- XmlTextWriter.cs
- IssuanceTokenProviderBase.cs
- HtmlButton.cs
- GridProviderWrapper.cs
- ParserExtension.cs
- DocumentViewerBaseAutomationPeer.cs
- MemberCollection.cs
- WeakEventTable.cs
- AssertSection.cs
- DesignerActionPropertyItem.cs
- Normalization.cs
- ProcessHostConfigUtils.cs
- HttpCacheVaryByContentEncodings.cs
- ConnectorDragDropGlyph.cs
- FieldNameLookup.cs
- DataGridSortingEventArgs.cs
- RegionInfo.cs
- OdbcConnectionString.cs
- SetIterators.cs
- EncodingDataItem.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ObjectContextServiceProvider.cs
- TypeDependencyAttribute.cs
- BinaryMessageEncodingElement.cs